Mac下出现Caused by: java.lang.NoClassDefFoundError: com/sun/tools/javac/Main问题,求解决
我看了好多网上的解决方案都说重新检查java_home什么的,mac下面在哪儿,而且我已经把tools.jar这个jar包引到pom文件了,编译正常,但还是出现这个问题。...
我看了好多网上的解决方案都说重新检查java_home什么的,mac下面在哪儿,而且我已经把tools.jar这个jar包引到pom文件了,编译正常,但还是出现这个问题。
/*public static void main(String[] args) {
int i = 10;
String code = "System.out.println(\"Hello World!\"+(13+2*5/3));";
code += "for(int i=0;i<" + i + ";i++){";
code += " System.out.println(Math.pow(i,2));";
code += "}";
try {
run(code);
} catch (Exception e) {
e.printStackTrace();
}
}*/
public synchronized static File compile(String code) throws Exception {
File file = File.createTempFile("JavaRuntime", ".java", new File(System.getProperty("user.dir")));
file.deleteOnExit();
// 获得类名
String classname = getBaseFileName(file);
// 将代码输出到文件
PrintWriter out = new PrintWriter(new FileOutputStream(file));
out.println(getClassCode(code, classname));
out.close();
// 编译生成的java文件
String[] cpargs = new String[] { "-d",
System.getProperty("user.dir") + "/target/classes/",
file.getName() };
int status = Main.compile(cpargs);
if (status != 0) {
throw new Exception("语法错误!");
}
return file;
}
用上面的main来调用就可以,在其他方法里面调用就会报错 展开
/*public static void main(String[] args) {
int i = 10;
String code = "System.out.println(\"Hello World!\"+(13+2*5/3));";
code += "for(int i=0;i<" + i + ";i++){";
code += " System.out.println(Math.pow(i,2));";
code += "}";
try {
run(code);
} catch (Exception e) {
e.printStackTrace();
}
}*/
public synchronized static File compile(String code) throws Exception {
File file = File.createTempFile("JavaRuntime", ".java", new File(System.getProperty("user.dir")));
file.deleteOnExit();
// 获得类名
String classname = getBaseFileName(file);
// 将代码输出到文件
PrintWriter out = new PrintWriter(new FileOutputStream(file));
out.println(getClassCode(code, classname));
out.close();
// 编译生成的java文件
String[] cpargs = new String[] { "-d",
System.getProperty("user.dir") + "/target/classes/",
file.getName() };
int status = Main.compile(cpargs);
if (status != 0) {
throw new Exception("语法错误!");
}
return file;
}
用上面的main来调用就可以,在其他方法里面调用就会报错 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询