1

我有一堆 java 文件,我正在运行以下代码以尝试编译它们。

"\Program Files\Java\jdk1.6.0_16\bin\javac" Main.java

我正在看到这个错误消息

Main.java:3: package colourtiler.patternsdoes not exist 
import colourtiler.patterns.draw;

它所引用的代码位于文件夹 patters/PatternColour.java 中,我怎样才能让它包含这个文件?

谢谢

4

5 回答 5

6

您需要在 javac/java 的-cpor-classpath参数中包含它的路径。例如

javac -cp .;c:/path/to/colourtiler/patterns/draw Main.java

其中c:/path/to/colourtiler/patterns/draw指向依赖类的包根。如果你有更多,那么你需要用分号分隔它。如果路径中有空格,则需要引用单个路径。或者,您也可以将其打包到 JAR 文件中(或使用已打包的文件)并将 JAR 文件的完整文件路径放在类路径中。

如果收集和键入类路径感到无聊,请考虑使用批处理/shell 文件。

祝你好运。

于 2009-11-04T14:26:50.377 回答
3

使用-classpath(又名-cp)或-sourcepath参数来设置基本源位置。使用-classpath参数指定二进制依赖项(jar 文件或基本 .class 文件目录)。使用-d参数指定输出目录。

需要注意的一件事是名称空间(包)必须与目录结构匹配。

C:\temp>dir /B /S
C:\temp\bin
C:\temp\foo
C:\temp\src
C:\temp\src\foo
C:\temp\src\foo\Bar.java
C:\temp\src\foo\Baz.java

C:\temp>type src\foo\Bar.java
package foo;
public class Bar extends Baz {}

C:\temp>javac -cp .\src -d .\bin src\foo\Bar.java

C:\temp>dir /B /S
C:\temp\bin
C:\temp\foo
C:\temp\src
C:\temp\bin\foo
C:\temp\bin\foo\Bar.class
C:\temp\bin\foo\Baz.class
C:\temp\src\foo
C:\temp\src\foo\Bar.java
C:\temp\src\foo\Baz.java

声明的类文件package foo;必须在目录中foo。声明的类文件package foo.foo;必须在目录中foo\foo,依此类推。

请参阅javac的文档。有关更广泛的文档,请参见此处。classpath

于 2009-11-04T14:45:18.687 回答
0

我需要查看一个文件列表才能确定,但​​听起来它应该在 colourtiler/patterns 中。

于 2009-11-04T14:25:10.177 回答
0

您首先需要编译patters/PatternColour.java,然后在编译时将生成的类的位置添加到您的类路径中Main.java

于 2009-11-04T14:25:24.373 回答
0

通过安装 Eclipse 并将包含类的文件夹配置为 Eclipse 项目(使用导入功能),您将获得很多时间。

它将避免您将所需的 JAR 库、输出文件夹、...作为参数传递

于 2009-11-04T15:24:26.533 回答