我編譯從文字類得到的ClassLoader .class文件在Java中
public class Foo{
public Foo(){
}
}
通過org.abstractmeta.toolbox.compilation.compiler.JavaSourceCompile
,我想知道有沒有什麼辦法讓編譯後的字節碼(.class文件)從類加載器或任何任何對象
我編譯從文字類得到的ClassLoader .class文件在Java中
public class Foo{
public Foo(){
}
}
通過org.abstractmeta.toolbox.compilation.compiler.JavaSourceCompile
,我想知道有沒有什麼辦法讓編譯後的字節碼(.class文件)從類加載器或任何任何對象
你需要編寫自定義類加載器重載的findClass方法
public Class findClass(String name) {
byte[] b = ... // get the bytes from wherever they are generated
return defineClass(name, b, 0, b.length);
}
感謝mohsin正是我nedd ... //因爲我的課不是.class文件我有一個類存儲在字符串和我編譯的-runtime-現在我nedd字節碼是由compilation.toolbox生成的,它給了我一個java.lang.classLoader來加載一個類 –
String clazz =「public class foo {pubic Foo(){}} 「 –
當您使用JavaSourceCompiler
時,必須爲compile
方法的兩個版本提供CompilationUnit
。在CompilationUnit
上調用getOutputClassDirectory()
以獲取包含所有編譯的.class
文件的目錄。
我嘗試,但這是類路徑中的地址,並沒有.class文件 –
File m = compilationUnit.getOutputClassDirectory(); if(m.exists()) System.out.println(」ok「); else System.out.println(「ops」);結果是ops –
您在運行'compile'之前還是之後嘗試過? – chrylis
Google無法找到您正在使用的編譯器,並且'abstractmeta.com'似乎無法正常工作。請發佈一個鏈接到編譯器的文檔或網站。 – chrylis
嗨chrylis所有https://code.google.com/p/compilation-toolbox/ enjory它:( –