有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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

我已经在Eclipse中清理了该项目,并确保单击了build automatically,尽管我认为如果它没有在Eclipse中编译最近的更改,那么这是需要修复的。所以我不知道还能是什么


共 (1) 个答案

  1. # 1 楼答案

    因为.\src\main\java没有任何用处

    Eclipse有一个称为“构建器”和“项目种类”的概念,根据您设置java项目的方式,Eclipse的build on save体系结构的工作方式有所不同

    假设你刚刚去了:“File>;New Project>;Java Project”,并选择了所有默认选项,eclipse的设置方式是你有一个src目录(你写src/main/java的事实证明你没有这么做,但为了示例起见,我将继续),当你在eclipse中保存任何Java文件时,eclipse将立即更新这个构建视图,它将位于名为bin的项目根目录的一个目录中

    这就是类文件所在的位置,因此,如果要运行命令行上的文件,正确的做法是:

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

    添加src dir是完全没有意义的,除非类文件就在源文件旁边,在这种情况下,调用dirsrc显然是非常愚蠢的(作为编程的一般规则,选择一个明显存在的名称是一个非常糟糕的主意,原因显而易见)

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