如何编译java代码?

时间:2009-11-04 14:21:39

标签: java compilation javac

我有一堆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中,如何才能将其包含在此文件中?

感谢

5 个答案:

答案 0 :(得分:6)

您需要在javac / java的-cp-classpath参数中包含其路径。 E.g。

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

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

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

祝你好运。

答案 1 :(得分:3)

使用 -classpath (又名 -cp )或 -sourcepath 参数设置基本源位置。使用 -classpath 参数指定二进制依赖项(jar文件或base .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文档,请参阅here

答案 2 :(得分:0)

我需要查看文件列表以确定,但听起来应该是colourtiler / patterns。

答案 3 :(得分:0)

首先需要编译patters/PatternColour.java,然后在编译Main.java

时将结果类的位置添加到类路径中

答案 4 :(得分:0)

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

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