我有一個(gè)包含兩個(gè)類的java源文件:package com.example;public class Test { public void sayHello() { String hello = new HelloProducer().getHello(); System.out.println(hello); } public static void main(String[] args) { new Test().sayHello(); }}class HelloProducer { public String getHello() { return "hello"; }}我想使用 Java SDK 以編程方式編譯這個(gè) java 源文件,這是我嘗試過的。package com.example;import java.io.IOException;import javax.tools.*;import java.io.ByteArrayOutputStream;import java.io.OutputStream;import java.net.URI;import java.util.ArrayList;import java.util.Collections;public class Compiler { public static void main(String[] args) throws IOException { byte[] classBytes = compile(); // how to write classBytes to two class files: HelloProducer.class and Test.class? } public static byte[] compile() throws IOException { String javaSource = "package com.example;\n" + "\n" + "public class Test {\n" + " public void sayHello() {\n" + " String hello = new HelloProducer().getHello();\n" + " System.out.println(hello);\n" + " }\n" + " public static void main(String[] args) {\n" + " new Test().sayHello();\n" + " }\n" + "}\n" + "class HelloProducer {\n" + " public String getHello() {\n" + " return \"hello\";\n" + " }\n" +有效。我成功編譯了這個(gè)java源代碼并得到了一個(gè)字節(jié)數(shù)組classBytes。但問題來了:當(dāng)你編譯Test.javausing 時(shí)javac,你會(huì)得到兩個(gè)類文件:Test.classand HelloProducer.class,但是現(xiàn)在我只有一個(gè)字節(jié)數(shù)組classBytes,我怎么能像 一樣正確地將字節(jié)數(shù)組寫入兩個(gè)文件(Test.class和HelloProducer.class)javac?
添加回答
舉報(bào)
0/150
提交
取消