java - 在 Manjaro Linux 上运行 Java 程序
问题描述
我正在用 OPCAT 试验简单的系统工程模型。我知道有更新的云版本,但它不允许共享和保存模型,所以我坚持使用旧的 OPCAT。
它是一个 java 应用程序,在 Windows 机器上运行它使用
java -Xmx1024m -Dopcat.home="%APPDATA%\Opcat" -Dopcat.source="C:\Program Files (x86)\Opcat\Opcat.Structure" -jar "C:\Program Files (x86)\Opcat\Opcat2.jar"
按照该逻辑,我将终端输入转换为
java -Xmx1024m -Dopcat.home="/home/dh/opcat" -Dopcat.source="/home/dh/opcat/Opcat.Structure" -jar ~/opcat/Opcat2.jar
不幸的是我得到了错误(选择,实际输出更长):
log4j:ERROR setFile(null,true) 调用失败。java.io.FileNotFoundException:线程“main”中的 opcat-log.xml 异常 java.lang.NoClassDefFoundError:sun/misc/BASE64Decoder
我尝试了 java-15-openjdk 和 java-16-jdk,结果总是一样。网络搜索问题导致我设置了不同的 CLASSPATH,但没有任何效果。
那里有很多文本导致 Java 开发的兔子洞,但我根本没有能力深入研究它们。我真的希望我能为这个问题找到一个简单的解决方案,因为我是流程工程师,与软件开发人员相差甚远(我很遗憾)。
我正在使用 manjaro linux,可以在此处找到 OPCAT jar 文件:http://esml.iem.technion.ac.il/opcat-installation/ (最后一个要点)。我尝试了“如何在 MAC 上安装 OPCAT”-帮助文件,但并不幸运。
我不知道在这里会发生什么,也许您可以指出正确的方向。谢谢..
解决方案
你有一个旧版本的 OPCAT,它是用旧版本的 Java 开发的。Oracle 使用 Java 9 删除了该类sun.misc.BASE64Decoder
,因此您需要 Java 8 才能运行它。
我强烈建议使用SDKMAN来管理系统上不同版本的 SDK。
推荐阅读
- rust - 为什么结构解构后会有drop call?
- python-3.x - 如何在 selenium chromedriver python 中设置具有身份验证的代理?
- javascript - iMacros 从 .js 文件运行 .js 文件
- mysql - 当我尝试运行查询时,MySQL 抛出错误 1111,如何修复我的 group by 和有子句?
- python - 使用解包方法更新字典的优点
- c# - 在字段级别禁用 asp.net 核心中的客户端验证
- postgresql - PostGIS 包装函数有效,但从不返回
- c# - 通过数据库中记录的 ID 对用户进行身份验证
- java - 构造 LocalDate 时自动转换月/日
- c++ - 从单链表和错误服务中获取键的函数