【问题标题】:Java - classNotFound Exception from Windows command line but not EclipseJava - 来自 Windows 命令行但不是 Eclipse 的 classNotFound 异常
【发布时间】:2013-04-23 03:08:17
【问题描述】:

我的代码在 Eclipse 中运行良好,没有构建路径错误或任何问题,但是当我尝试从命令行运行我的 Java 程序时,我在我的一个内部类中得到了一个 classNotFound Exception。我不仅不明白我是如何得到这个异常的,而且我什至不确定如何调试它,因为它在 IDE 环境中看起来和工作正常。任何帮助表示赞赏!

编辑

我正在为名为 J-- 的 Java 子集编写一个编译器,所以我真的不想深入了解它是如何工作的。但我不会调用javac HelloWorld.java,而是调用等效的j-- HelloWorld.javajavac 工作正常。您可能会说问题出在您的代码上,但它再次在 Eclipse 中编译并运行良好。因此,某处似乎存在脱节。如果有帮助,这里是 Windows bash 脚本:

set BASE_DIR=%~dp0
set j="%BASE_DIR%\..\"
set JAVA=java
set CPATH="%BASE_DIR%\..\lib\j--.jar;%BASE_DIR%\..\lib\spim.jar"
if "%CLASSPATH%" == "" goto runApp
set CPATH=%CPATH%;"%CLASSPATH%"

:runApp
%JAVA% -classpath %CPATH% jminusminus.Main "j--" %*

set JAVA=
set BASE_DIR=
set CPATH=

编辑

感谢 Aubin,输出 .jar 文件并将其与 class not found 进行比较是我能够解决此冲突的方法。

【问题讨论】:

  • 你能给我们看一些代码吗?你是如何在命令行上编译它的?
  • 显示你在命令和文件夹结构中的尝试
  • Eclipse 会处理您的课程位置,您需要在 Java 调用中指定 CLASSPATH
  • 我添加了一些更新。 @PM77-1 你能详细说明一下吗?
  • 在Eclipse中如果你进入"Run as" -> "Configuration",你会看到你当前的项目默认包含在CLASSPATH中。外界不知道你的项目是什么。此外,除非您指定,否则当前目录不在CLASSPATH 中。

标签: java command-line javac


【解决方案1】:

通常 Eclipse 从src 获取源代码并将类文件生成到bin

试试:

java -cp bin a.b.c.d.MyClass

要将您的工具称为j-- <args>,您需要编写一个嵌入命令的shell:

java -cp bin a.b.c.d.MyClass $*

【讨论】:

  • 我添加了我正在使用的脚本。我不知道会在哪里完成..?
  • jar -tf j--.jar仔细检查你的jar的内容
  • 啊,看来你可能是对的。 jar 中有JSRAssign.java,但抛出的异常正在寻找JSrAssign.java。你知道我怎样才能重新生成罐子吗?
  • 如果你有类文件*.class,你可以用jar -cf xxx.jar *.class重新创建jar
猜你喜欢
  • 1970-01-01
  • 2017-09-22
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多