我一直致力于将 Java 应用程序从 Solaris 服务器移植到 Windows 服务器。我终于重写了调用脚本,以向 java launch 命令提供所有适当的信息(我认为)。然而,我继续得到
Could not find the main class: com.dir1.dir2.dir3.dir4.ManagementAgent. Program will exit.
此路径和文件确实存在于一个 jar 文件中(CLASSPATH 中的第一个文件),并且它驻留在显示的路径中(例如,如果扩展 jar,则类文件的绝对路径将是 c:\apps\ecs\bin\com\dir1\dir2\dir3\dir4\ManagementAgent.class
)
我一直在关注the directions from this Q&A但继续收到错误。
显然我还没有修复某些问题,但我可以找出可能是什么。
%JAVA_HOME%\bin\javaw.exe -Xms512m -Xmx1024m -cp .\ecs.jar;.\ect.jar;.\jmxri.jar;.\jmxtools.jar;.\log4j.jar;.\xercesImp.jar;.\xalan.jar;.\weblogic81.jar;.\classes12_9i.zip;.\localEJB.jar;.\tct_ip1.1.jar com.dir1.dir2.dir3.dir4.ManagementAgent
我从包含所有 jar 的目录执行命令。我尝试了 CLASSPATH 的几种变体(如下所示):
- 相对路径;一般调用 jar 和类(例如
.\*;.
) - 绝对路径,一般调用 jar 和类(例如
c:\apps\ecs\bin\*;c:\apps\ecs\bin
) - 相对路径,显式调用 jar(如上所示)
- 绝对路径,显式调用 jar(如何在 Solaris Server 上执行)
但似乎没有任何组合有效。
最佳答案
如果您还没有,我建议您使用以下命令仔细检查 jar 中的路径:
jar tf .\ecs.jar
您应该只看到类文件的相对路径,即:
com/dir1/dir2/dir3/dir4/ManagementAgent.class
我还将验证 ManagmentAgent 的 main 方法是静态的,并且将 String[] 作为其唯一参数。
编辑:我还将验证您使用的 Java 版本是否与编译应用程序的版本一样高或更高。您可以使用以下方法进行检查:
java -version
希望这有帮助,祝你好运!
关于Java 找不到我的 main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33925627/