java - 如何使用最新的 Java LTS 11 运行老式 Java 程序?
问题描述
我想运行 Siemens LOGO Soft Comfort。
dell@dell-Precision-M6400:~/Hämtningar/Logo 6.1/Linux/tools/Application$ ./LOGOComfort
Unrecognized option: -Xincgc
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
dell@dell-Precision-M6400:~/Hämtningar/Logo 6.1/Linux/tools/Application$
这是 Siemens LOGO soft comfort 6.1,我有它的许可证。但我有一个问题。
Unrecognized option: -Xincgc
那么我怎样才能让最新的 Java LTS 11 可以与 2008 年的 Java 一起使用呢?我假设是 Java SE 6 或 J2SE 5.0。
配合LOGO软件,自带bin和lib两个文件夹
更新:
我删除了-Xincgc
inLOGOComfort.lax
文件,现在我得到了这个
dell@dell-Precision-M6400:~/Hämtningar/Logo 6.1/Linux/tools/Application$ ./LOGOComfort
Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
Stack Trace:
java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/windows/WindowsLookAndFeel
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at DE.siemens.ad.logo.app.Application.<clinit>(Application.java:141)
at Start.startApplication(Start.java:570)
at Start.main(Start.java:553)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.zerog.lax.LAX.launch(DashoA8113)
at com.zerog.lax.LAX.main(DashoA8113)
Caused by: java.lang.ClassNotFoundException: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 18 more
This Application has Unexpectedly Quit: Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
dell@dell-Precision-M6400:~/Hämtningar/Logo 6.1/Linux/tools/Application$
更新:
解决方案:
- 删除 -Xincgc
- 请改用 Java 8。它需要 Swing。Java 11 不使用 Swing
解决方案
打开文件 'LOGOComfort',因为它可能是一个 shell 脚本。找到该-Xincgc
选项并将其删除。
如果它是 gobbledygook,安装一个 java6,它确实有现在删除的-Xincgc
选项。
如果这不是一个选项,请制作一个假 java:制作一个位于“真实”java 位置的脚本,它所做的只是扫描所有命令行参数,从中删除 -Xincgc,然后将其余部分通过 unmoleded 传递给真正的java。这是一个疯狂的黑客攻击,可能会破坏其他东西,但它可能会“修复”这个问题。我强烈建议您先选择前两个选项之一。
没有办法告诉 java 11+:你能“支持” -Xincgc 选项吗?
推荐阅读
- amazon-web-services - 我可以使用哪些 AWS 服务和工作流程从 API 提取和分析 JSON 日常使用数据?
- java - lombok 常量需要 mvn install
- pandas - 熊猫读取文件避免不需要的分隔符
- numpy - 如何插入一个 5 维数组?
- javascript - React Native 同时按下两个按钮
- r - 在 R 中重新编码分类变量并重塑数据框
- javascript - 传递状态或道具以将值传递给反应中的子组件
- python - 在 python 中使用 object.__class__ 是否有任何注意事项?
- python - Pyspark:flattem Array 列
- php - 尝试使递归php