我有一个非常古老的应用程序(2001年发布)我试图在Windows 7/8/10中工作。其中有一个setup.exe部分,它以某种身份使用Java,但无法正常工作。我怀疑它是使用java,因为我反编译了与应用程序打包在一起的JAR文件,并且在.java文件中引用了几个设置步骤(以及名为setup.java的文件)。还有一个与该应用程序一起发布的jre文件夹,运行以下(日期)版本:
F:\jre\bin>java -version
java version "1.3.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0_01)
Java HotSpot(TM) Client VM (build 1.3.0_01, mixed mode)
起初我怀疑应用程序使用系统环境变量来使用当前安装的JAVA版本,但我通过从系统中彻底清除JAVA并重新测试来判断这一点 - 结果相同。
我接下来尝试将文件夹更新到最新版本。但是,正如预期的那样,正在进行的调用不再受支持(错误消息引用了_JVM_IsVMGeneratedMethodl)。
此时我的选项已经用完了。我总是可以在VM中运行这个应用程序(它工作正常),但我更愿意以一种简单的方式将其打包以便于分发和安装。我可以做任何吗?我正在考虑应用程序虚拟化的一些方面,但仍在阅读它。
答案 0 :(得分:2)
没有"在那里"很难说,但我猜测旧的(1.3)JVM与更现代的Windows版本不兼容
您最好的选择可能是针对虚拟机中最初开发的应用程序的任何Windows版本运行它。
如果您已经/可以获得完整的源代码,您可以尝试使用当前系统支持的Java版本重新编译它。但这可能是一个长镜头。
答案 1 :(得分:1)
如果它包含一个JRE文件夹,那么您可以跳过安装程序并添加一些批处理文件以通过此表单的命令启动具有特定JRE的.jar:
java -jar pathToYourJAR
不过,您还可以考虑转换为可执行文件的选项,这里提到一些较旧的: How can I convert my Java program to an .exe file? 其中一些可能允许您选择捆绑/使用哪个JRE