【问题标题】:javac not producing outputjavac不产生输出
【发布时间】:2012-01-07 21:27:32
【问题描述】:

我正在尝试使用 javac 从命令行编译一个 java 项目,但我在命令行上没有得到任何输出。此外,没有生成 .class 文件。

我用来调用 javac 命令的确切语法如下:

javac @options @javaFiles

选项文件的内容如下:

-g
-verbose
-d classes
-classpath cp1;cp2;cp3

其中 cp1、2、3 等指的是我机器上的 jar 文件。 javaFiles 文件有一个我希望编译的 java 文件列表:

C:\path\to\dir\one.java
C:\path\to\dir\two.java

问题是命令行上没有输出(如果我拼错了一个命令行开关,那么命令行上就会有错误输出)并且在 classes 文件夹中没有生成 .class 文件。 此外,如果我将“-Xstdout output.txt”开关添加到选项文件并尝试编译。 javac 命令退出并创建了 output.txt 文件,但文件中没有任何信息。

我的问题是: 我是否使用错误的语法来调用 javac,我应该如何更改它?

编辑:

我更改了 Jasper 的回答中提到的选项和 javaFiles 文件,但我得到了 现在出现以下错误:

*__* javac @options @javaFiles
javac:找不到文件:com\compname\cloud\automation\portal\definitions\landing\LandingPage.java
用法:javac <options> <source files>
使用 -help 获取可能选项的列表

编辑 2:

好的,这个问题出在类路径中的一个 jar 上。当那个 jar 被移除时(每次移除每个 jar 的痛苦),一切都会正确编译并创建 .class 文件。

我仍然不确定为什么当这个 jar 在类路径上时 javac 会静默失败,即使使用了详细开关。

目前,我可以不用这个罐子。感谢人们提供的帮助...

【问题讨论】:

  • 您从哪个目录调用javac ...?它应该从包层次结构根目录的文件中调用(即com 目录所在的目录)。

标签: java cmd javac


【解决方案1】:

在第二个文件中,不要使用完整的路径名,而是仅使用软件包基目录中的路径名。假设你的代码在包org.mypackage,而你的源文件在目录C:\myproject\src\org\mypackage,把它放在第二个文件中:

org\mypackage\One.java
org\mypackage\Two.java

在第一个文件中,添加-sourcepath 选项:

-sourcepath C:\myproject\src

【讨论】:

  • 您是否还添加了-sourcepath 选项?
【解决方案2】:

我刚刚遇到了同样的问题,它似乎与签名和未签名的第三方 jar 文件有关:

  • 如果我调用 javac 并使用未签名的 jar 文件,一切都会按预期工作
  • 如果我在编译代码之前签署第三方 jar 文件,javac 会静默失败

希望这会有所帮助, .安德烈亚

【讨论】:

    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2014-05-06
    • 2017-02-03
    • 2014-08-24
    相关资源
    最近更新 更多