繁体   English   中英

为什么我的 Java 代码更改在从命令行运行但在 Eclipse 中运行时没有反映出来?

[英]Why are my Java code changes not being reflected when ran from command line but working in Eclipse?

我正在使用 bash 脚本来运行我在 Eclipse 中创建的 Java 程序,而 Java 程序在从 Eclipse 运行时工作正常。它有我最近的更改,我可以通过我刚刚插入并再次运行的一些打印语句来判断。

然而,当我运行我的 bash 脚本时,这些打印语句和我的所有其他更改都没有被看到,它实际上只是像这样运行程序(使用 testNG):

java -cp ".\src\main\java;lib\*;" org.testng.TestNG ParallelTestXML.xml

我已经清理了 Eclipse 中的项目并确保自动构建被点击,尽管我认为如果它没有在 Eclipse 中编译最近的更改,我认为这是修复。所以我不知道它可能是什么。

因为.\src\main\java没有做任何有用的事情。

Eclipse 具有称为“构建器”和“项目种类”的概念,并且根据您设置 java 项目的方式,eclipse 的构建保存架构的工作方式不同。

假设你刚刚去了:“文件 > 新项目 > Java 项目”,并选择了所有默认选项,eclipse 的设置方式是你有一个src目录(你写src/main/java的事实掩盖了你没有不要这样做,但为了示例我会继续),当您在 eclipse 中保存任何 java 文件时,eclipse 将立即更新它的构建视图,并且它将位于项目根目录下的目录中叫bin

这就是 class 文件所在的位置,所以如果你想在命令行上运行这些文件,正确的做法是:

java -cp ".\bin;lib\*;" org.testng.TestNG ParallelTestXML.xml

添加 src 目录是完全没有意义的,除非 class 文件就在源文件旁边,在这种情况下调用该目录src显然是非常愚蠢的(作为编程的一般规则,选择一个明显存在的名称是非常糟糕的想法,原因很明显)。

如果您有一些其他项目设置,例如,您已将其设置为 maven 项目或 gradle 项目,那么,这取决于您如何配置 eclipse eclipse 是否正在尝试“匹配”构建,或者正在触发每次保存时都会构建完整的 maven,或者如果您应该手动调用 maven。 最有可能是后者。 让 maven 来建造,然后 maven 会在某个地方建造你的东西。 通常, {projroot}\target\classes ,但如果您的应用是使用 maven 构建的,要“运行”您的应用,请不要调用java 调用mvn ,要求它测试你的东西。 这样 mvn 将照顾您的部门等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM