2013-08-19 80 views
0

我編譯從文字類得到的ClassLoader .class文件在Java中

public class Foo{ 
    public Foo(){ 
    } 
} 

通過org.abstractmeta.toolbox.compilation.compiler.JavaSourceCompile

,我想知道有沒有什麼辦法讓編譯後的字節碼(.class文件)從類加載器或任何任何對象

+1

Google無法找到您正在使用的編譯器,並且'abstractmeta.com'似乎無法正常工作。請發佈一個鏈接到編譯器的文檔或網站。 – chrylis

+0

嗨chrylis所有https://code.google.com/p/compilation-toolbox/ enjory它:( –

回答

0

你需要編寫自定義類加載器重載的findClass方法

public Class findClass(String name) { 
    byte[] b = ... // get the bytes from wherever they are generated 
    return defineClass(name, b, 0, b.length); 
} 
+0

感謝mohsin正是我nedd ... //因爲我的課不是.class文件我有一個類存儲在字符串和我編譯的-runtime-現在我nedd字節碼是由compilation.toolbox生成的,它給了我一個java.lang.classLoader來加載一個類 –

+0

String clazz =「public class foo {pubic Foo(){}} 「 –

0

當您使用JavaSourceCompiler時,必須爲compile方法的兩個版本提供CompilationUnit。在CompilationUnit上調用getOutputClassDirectory()以獲取包含所有編譯的.class文件的目錄。

+0

我嘗試,但這是類路徑中的地址,並沒有.class文件 –

+0

File m = compilationUnit.getOutputClassDirectory(); if(m.exists()) System.out.println(」ok「); else System.out.println(「ops」);結果是ops –

+0

您在運行'compile'之前還是之後嘗試過? – chrylis

相關問題