当我的当前工作目录不是默认包时,如何编译文件?

时间:2014-04-23 22:32:04

标签: java linux

我在Linux中有两个文件,都在默认包AddSingleInstance.javaFinder.java

我正在AddSingleInstance中创建Finder的实例:

AddSingleInstance ai = new AddSingleInstance();

当我编译Finder.java文件时,它会给出以下错误:

Finder.java:20: error: cannot find symbol
AddSingleInstance ai = new AddSingleInstance();
    ^

我正在从另一个目录编译。如何才能成功编译这两个文件?

3 个答案:

答案 0 :(得分:1)

要解决您的问题,您的java文件应该在您的类路径中,以便javac知道在哪里找到它们。您可以手动设置类路径:

javac -classpath javadir javadir\Finder.java
java -cp javadir Finder

或使用.:$PATH的默认类路径。最简单的方法是

cd javadir
javac Finder.java
java Finder

我想大多数人都不会遇到这个问题(我之前从未见过!)因为他们从默认包(源树的根目录)运行javac

答案 1 :(得分:0)

如果它们在同一个包中,则可以在Finder中访问AddSingleInstance,反之亦然。

但是如果它们在单独的包中,那么在Finder.java的顶部添加以下行(在包声明之后)

import packageName.AddSingleInstance;

答案 2 :(得分:0)

您的源文件可能正在使用Windows样式换行符。 尝试使用dos2unix程序修复换行符并尝试重新编译。我还必须看到完整的源文件以进一步帮助,我假设您在文件的顶部有导入。