如何解决如何抑制 Octave io 包加载警告:“OpenJDK 64 位服务器 VM 警告:存档... java.system.class.loader 属性
Octave 有没有办法抑制下面的 io 包加载警告消息:
OpenJDK 64 位服务器 VM 警告:存档的非系统类被禁用,因为指定了 java.system.class.loader 属性(值 = "org.octave.OctClassLoader")。要使用归档的非系统类,必须不设置此属性
我无法控制 io 包加载正在做什么,我的程序的其余部分工作正常。但是它使控制台输出变得混乱非常烦人。
我在 Xubuntu 18.04 中运行八度音程脚本
谢谢!
解决方法
我不知道这是否与 io 包本身有关。这可能就是您设置八度音程以在系统上使用 java 的方式。
此外,这个警告似乎是由 Java 生成的,而不是由八度音程生成的,所以我怀疑您是否可以从 in 八度音程中执行任何操作来将其关闭。
实际上它的意思是,大概 io(或您正在使用的 io 包中的特定函数)依赖于 java interface,并且以某种方式运行 java 命令并设置了 -D 属性如您的警告中所述(即,大概是 java -Djava.system.class.loader="org.octave.OctClassLoader" ...
)。
following excerpt from the manual 可能与您相关:
您可以在名为 java.opts 的文件中指定用于创建 JVM 的选项。这是一个文本文件,您可以在其中输入包含 -X 和 -D 选项的行,然后在初始化期间将这些选项传递给 JVM。
Java 选项文件所在的目录由环境变量 OCTAVE_JAVA_DIR 指定。如果取消设置,则使用 javaclasspath.m 所在的目录(通常为 OCTAVE_HOME/share/octave/OCTAVE_VERSION/m/java/)。你可以通过执行
找到这个目录which javaclasspath
,
这似乎已在 Octave bug #55174 中修复。
hackish 解决方法(二进制编辑 Octave 库):
cp -ai /usr/lib/x86_64-linux-gnu/liboctinterp.so.7.0.1 a
bbe -e 's/-Djava.system.class.loader=org.octave.OctClassLoader/-Dfoo=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/' a > b
ls -l a b # Make sure the binary edit did not change the file length!
chmod 644 b
sudo cp -ai b /usr/lib/x86_64-linux-gnu/liboctinterp.so.7.0.1
sudo chown root.root /usr/lib/x86_64-linux-gnu/liboctinterp.so.7.0.1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。