我是Java的新手(来自C ++ / .NET背景)并且遇到了非常奇怪的错误。我在本地桌面上的Windows XP上开发了Eclipse IDE。似乎由于某种原因,我的应用程序的一个较旧的(当然是buggier)实例保持运行的一些非常奇怪的原因,我无法理解。
即使我关闭了eclipse,我的应用程序的旧版本也在后台运行。因此,除非我重新启动,当我尝试测试新版本的代码时,这个“旧的,流氓实例”正在争夺使用的资源(共享中的文件)与更新(跳得少的错误)版本的代码。
有没有人经历过这个? JVM是否出于某种原因缓存旧版Java应用程序?我在这里错过了什么?当我重启我的机器时,实例终于死了......
我正在试图弄清楚为什么我的代码的新版本仍然有同样的旧bug,直到我意识到这发生了...... 耸肩
感谢您的帮助!
答案 0 :(得分:1)
Java应用程序在“java.exe”下运行,因此您可以在任务列表中查找。遗憾的是,如果几个Java应用程序同时运行,很难说哪个是哪个。
我对Eclipse并不十分熟悉,但看起来Eclipse应该在关闭Eclipse时告诉旧版本终止。 JVM不会缓存过去的版本。
希望这有帮助。
答案 1 :(得分:1)
你是不是偶然地运行你的程序,或者在从Eclipse重新运行它之前忘记关闭它的一个实例?
有一点,使用Eclipse时不是很明显,它允许同时运行任意数量的Java程序实例。当Console视图处于活动状态时,您可以选择终止最新的启动。
要将控制台切换到其他启动(如果有多个正在运行),您可以通过在“控制台”视图中按“显示所选控制台”图标(右上角的监视器图标)从列表中进行选择。 您还可以通过按“删除所有已终止的启动”从控制台视图中删除任何和所有已终止的启动控制台输出,如果每次启动都已终止,它现在应显示“此时无显示控制台”,否则为下一个最新版本正在运行的发射将被带到顶端。
如果这不是问题,事实上Eclipse已经失去了启动的轨道(这种情况非常罕见,但可能会发生 - 特别是如果你自己产生子进程),你可以安全地终止任何run-amock java.exe来自任务管理器的进程,因为Eclipse运行在Windows平台上的Windows可执行文件中。
答案 2 :(得分:1)
我也有这样的问题。我会尝试在进行更改后运行该程序,它将运行它的旧版本,仍然报告错误并停止我甚至已经注释掉的行。我尝试了micdah's solution,但在任务管理器中没有 java.exe 进程。我通过从任务管理器中删除Eclipse进程解决了这个问题,任务管理器在没有保存Eclipse Workspace 设置的情况下关闭了程序。当我重新启动时,我在 .java 文件中保存的所有内容都正常启动。
答案 3 :(得分:0)
可能是Eclipse中的错误。可能是您的应用程序中的某些代码正在生成一个新进程。从这里无法分辨。
如果您还没有,请查看常规JDK附带的jps tool。它可能会更容易诊断问题。