java中用到ClassLoader.defineClass的时候,一般需要从base64字符串解码后获得byte数组。制作前面提到的base64字符串难免就需要对java文件进行编译,再对class文件进行base64,网上推荐方法是linux用base64命令,windows->certutil命令,实际上两个命令都会对base64字符串进行换行,甚至certutil还会写入文件,获取base64之后还要去除换行,麻烦!!!
一行解决问题,直接输出一行base64字符串到命令行界面不行吗?所以研究了一下,整了个一行解决问题的方法
linux
javac Test.java; cat Test.class | base64 -w 0 | xargs
windows,powershell
javac .Test.java ; $a = [System.IO.File]::ReadAllBytes(".Test.class") ; [System.Convert]::ToBase64String($a)