0

我正在编译这个类,如果我传递给编译的是这样JavaCompiler的,它会给我一个编译错误:String

public class className  extends classNeed{

}

但是如果我删除public它就可以了。我该怎么做才能使其可编译:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

String program = code;
Iterable<? extends JavaFileObject> fileObjects;
fileObjects = getJavaSourceFromString(program);

String[] options = new String[]{"-d",  contextClass.getPath()+"temp/"+pathJar+"/",
"-classpath",contextClass.getBasePath()+"WEBINF/lib/lib1.jar;
"+contextClass.getBasePath()+"WEB-INF/lib/lib2.jar"};



compiler.getTask(null, null, null, Arrays.asList(options), null, fileObjects).call();

它仍然公开工作吗?

编辑:错误字符串:///code.java:16:类 className 是公共的,应该在归档的 className.java 中声明

但名字是一样的

4

1 回答 1

1

公共类需要在自己的文件中声明吗?

根据语言规范,我认为编译器不会认为输入来自正确命名的 .java 文件。(公共类必须在它们自己的文件中定义)。

也许你弄错了路径,Java 编译器似乎拒绝它基于 Java 文件/声明的包和类名不匹配。

于 2013-05-16T12:09:07.227 回答