"找不到符号"错误 - 即使是一个荒谬简单的例子

Dav*_*son 4 java symbols compilation javac classpath

所以我一直试图在几个小时内解决这个问题.我已经浏览了互联网,我已经搜索了StackOverflow,我问过一些同事(我是实习生)老实说,没有人能告诉我发生了什么!我把一个非常简单的例子放在一起向你展示我在做什么(即使用简单的例子我也得到错误)

我有两个.java文件.一个是Test.java另一个是testClass.java.

//testClass.java

package test;

public class testClass {
    private int someMember=0;

    public testClass(){
        //kill me now
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我有我的Test.java文件,其中包含我的main方法.(虽然在我真正的问题中我没有主方法 - 它是一个带doGet()方法的servlet )

//Test.java
package test;

public class Test {

    public static void main(String[] args) {
        testClass myTest = new testClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下内容进行编译(从Windows命令行,使用当前目录保存我的.java文件):

..java bin location..\javac testClass.java
Run Code Online (Sandbox Code Playgroud)

这非常正常,我在当前目录中获得了一个testClass.class文件.然后,我尝试使用以下内容编译Test.java文件(再次在工作目录中):

..java bin location..\javac -classpath . Test.java
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Test.java:6: cannot find symbol
symbol : class testClass
location : class test.testClass
   testClass myTest = new testClass();
Run Code Online (Sandbox Code Playgroud)

你能帮助一个兄弟吗?:(

Jon*_*eet 14

你的类在一个包中,Java将寻找假定包结构的类 - 但javac不会为你构建那个结构,除非你告诉它; 它通常会将类文件放在Java文件旁边.

选项:

  • 将源文件放在test目录中,然后编译test\Test.javatest\testClass.java
  • 指定-d .编译时,强制javac构建包结构.

使用IDE(Eclipse,IntelliJ等)往往会鼓励甚至强迫您将文件放在正确的目录中,并且通常也会使构建代码变得更容易.