【问题标题】:How to compile java code?如何编译java代码?
【发布时间】:2009-11-04 14:21:39
【问题描述】:

我有一堆 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 中,我怎样才能让它包含这个文件?

谢谢

【问题讨论】:

  • 将“\Program Files\Java\jdk1.6.0_16\bin\”添加到 %PATH% 环境变量中,这样您就可以在任何地方执行 javac,只需键入“javac”即可。

标签: java compilation javac


【解决方案1】:

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

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

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

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

祝你好运。

【讨论】:

    【解决方案2】:

    使用 -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 文档,请参阅 here

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2015-11-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-30
            • 2017-09-15
            相关资源
            最近更新 更多