诊断;“不正确的类路径”;由java编译器指示

诊断;“不正确的类路径”;由java编译器指示,java,eclipse,eclipse-jdt,Java,Eclipse,Eclipse Jdt,出于对的绝望,我目前正在研究一种从eclipse插件内部编译单个文件的方法 到目前为止,我已经成功地编写了编译单个.java文件的代码,该文件没有外部的.class(不在.jar内部)依赖项 对于编译过程,我知道所有依赖项.class文件的位置,并使用-classpath选项将该信息提供给编译器。 目前,我这样调用编译器: String[]params=新字符串[]{ “-properties”,属性文件, “-g”、“-preserveAllLocals”, “-classpath”,clas

出于对的绝望,我目前正在研究一种从eclipse插件内部编译单个文件的方法

到目前为止,我已经成功地编写了编译单个.java文件的代码,该文件没有外部的
.class
(不在
.jar
内部)依赖项

对于编译过程,我知道所有依赖项
.class
文件的位置,并使用
-classpath
选项将该信息提供给编译器。
目前,我这样调用编译器:

String[]params=新字符串[]{
“-properties”,属性文件,
“-g”、“-preserveAllLocals”,
“-classpath”,classpath,
fileToCompile,
“-d”,输出路径,
“-proc:none”,
“-proceedOnError”,
};
布尔结果=BatchCompiler.compile(
参数,新的PrintWriter(outWriter),新的PrintWriter(errWriter),null;
变量:

  • 属性文件:存在,它包含工作区+项目设置的合并,不重复(按该顺序)
  • 类路径:包含多个以“;”分隔的路径(此路径有问题,请参见下文)
  • fileToCompile包含我要编译的文件的绝对路径。请注意,此文件不在源目录中
  • outputPath:项目的“bin”所在的目录。它从IProject对象本身获取
您可能会发现其他选项的含义

classPath
给了我一个错误。此测试项目中存在两个类: 这是它的内容(通过从本机java中删除大多数.jar includes来减小大小后):

“C:/ProgramFiles(x86)/java/jre1.8.0_66/lib/resources.jar”;“C:/ProgramFiles(x86)/java/jre1.8.0_66/lib/rt.jar”;D:/Users/user/runtime EclipseApplication/Tests/bin”

我尝试将这些作为类路径中的最后一个“包含”:

  • “D:/Users/user/runtime EclipseApplication/Tests/bin”
  • “D\:\Users\user\runtime EclipseApplication\Tests\bin”
  • “D\\:/Users/user/runtime EclipseApplication/Tests/bin”
  • “D\\:\\Users\\user\\runtime EclipseApplication\\Tests\\bin”
  • 以下是它在stderr中给出的输出:

    incorrect classpath: "D:/Users/user/runtime-EclipseApplication/Tests/bin"
    
    ----------
    
    1. ERROR in D:\Users\user\runtime-EclipseApplication\.metadata\.plugins\myplugin\tmp\sources\Test2.java (at line 3)
    
        public class Test2 extends Test{
    
                                  ^^^^^^^^
    
    Test cannot be resolved to a type
    
    在调用编译器之前,我可以在自己的代码中断言:

  • 该类路径目录存在
  • 该Test.class位于该目录中
  • 我在代码执行时使用默认包
  • 我在这里做错了什么?为什么它在一个不正确的类路径上对它进行分类


    我正在使用org.eclipse.jdt.core(v.3.10.2)依赖项,并在EclipseLuna(4.4)中编译,这是我希望插件支持的最低版本。

    经过几天之后,不知何故。。。
    “C:/ProgramFiles(x86)/java/jre1.8.0_66/lib/resources.jar”;“C:/ProgramFiles(x86)/java/jre1.8.0_66/lib/rt.jar”";D:/Users/user/runtime EclipseApplication/Tests/bin
    根据出现的错误,我可以猜测您是单独编译每个文件的,在您的特定情况下,类
    Test2
    是在
    Test
    类之前编译的,因此您的错误或您是单独编译类,而不是一次编译所有类。记住,j乌斯塔guess@JorgeCampos正如您所提到的,我正在分别编译每个类,但Test2是在测试后编译的。我还提到“我可以断言[…]classpath目录存在,Test.class位于该目录[…]”。您提到的并没有解释“不正确的classpath”警告,尽管:(,我认为这是它找不到Test.class的根本原因