在 aarch64 Odroid C2 上的 Java 1.8.0_73 上运行 WebStorm-143.382.36 在 libjnidispatch.so 上失败
Posted
技术标签:
【中文标题】在 aarch64 Odroid C2 上的 Java 1.8.0_73 上运行 WebStorm-143.382.36 在 libjnidispatch.so 上失败【英文标题】:Running WebStorm-143.382.36 on Java 1.8.0_73 on aarch64 Odroid C2 fails on libjnidispatch.so 【发布时间】:2016-07-09 08:43:26 【问题描述】:我已经在 aarch64 Odroid C2 上成功安装了 Java。
odroid@odroid64:~/WebStorm-143.382.36$ java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
它是 64 位 Java。
odroid@odroid64:~/WebStorm-143.382.36$ file /usr/lib/jvm/java-8-oracle/jre/bin/java
/usr/lib/jvm/java-8-oracle/jre/bin/java: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=72df68d7109e243051d4d4a7126fa84269c7c518, not stripped
我已将 WebStorm-143.382.36
和 .Webstorm11
目录从我的 x86_64 机器复制到 Odroid C2。
但是当我尝试启动 WebStorm 时它失败了:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=350m; support was removed in 8.0
log4j:WARN No appenders could be found for logger (io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[ 2013] ERROR - #com.intellij.idea.Main - Unable to load JNA library (OS: Linux 3.14.29-29)
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/linux-aarch64/libjnidispatch.so) not found in resource path (bin/../lib/bootstrap.jar:bin/../lib/extensions.jar:bin/../lib/util.jar:bin/../lib/jdom.jar:bin/../lib/log4j.jar:bin/../lib/trove4j.jar:bin/../lib/jna.jar)
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:776)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:736)
at com.sun.jna.Native.<clinit>(Native.java:131)
at com.intellij.idea.StartupUtil.b(StartupUtil.java:316)
at com.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:112)
at com.intellij.idea.MainImpl.start(MainImpl.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.ide.plugins.PluginManager$2.run(PluginManager.java:90)
at java.lang.Thread.run(Thread.java:745)
[ 1803] ERROR - #com.intellij.idea.Main - WebStorm 11.0.1 Build #WS-143.382.36
[ 1803] ERROR - #com.intellij.idea.Main - JDK: 1.8.0_73
[ 1803] ERROR - #com.intellij.idea.Main - VM: Java HotSpot(TM) 64-Bit Server VM
[ 1804] ERROR - #com.intellij.idea.Main - Vendor: Oracle Corporation
[ 1804] ERROR - #com.intellij.idea.Main - OS: Linux
Startup Error: Application cannot start in headless mode
如何为 aarch64 获取 libjnidispatch.so
,或者如何解决此错误?
当我在 x86_64 机器上运行 WebStorm 时,该文件不存在。
这个错误有根本原因吗?
【问题讨论】:
我使用 ant 从源代码构建了 jni,并用这个新的替换了 Webstorm 的 jni.jar 文件。这摆脱了与 JNA 相关的错误。我现在仍然留下Startup Error: Application cannot start in headless mode
。
另见:youtrack.jetbrains.com/issue/IDEA-163516
您似乎有一个(无头 java 实例)[blog.idrsolutions.com/2013/08/what-is-headless-mode-in-java],即没有 GUI 组件。尝试安装带有 GUI 组件的 java 实例,即非无头版本
【参考方案1】:
无法按照您描述的方式移植安装。您将不得不再次使用 JetBrains 人员使用的编译器的 aarch64 变体重新编译 WebStorm。
失败原因:
-
使用 WebStorm 打包的预编译二进制文件(如 libjnidispatch.so)可能会以类似的方式失败
您正在运行 Java 的无头实例(来自您的 cmets)
WebStorm 可能会针对其目标平台和架构进行优化。所以复制到其他硬件上运行是不可能的
可能有效的解决方案(不太可能):
-
重新编译所有预编译的二进制文件。闭源产品不可能
重新安装另一个带有 GUI 组件的 JDK。您的系统可能无法处理密集型任务,这就是您的模型带有无头 java 版本的原因
解决方案:您最好的选择(很可能——aarch64 没有市场)是让 JetBrains 将软件移植到 aarch64。
【讨论】:
以上是关于在 aarch64 Odroid C2 上的 Java 1.8.0_73 上运行 WebStorm-143.382.36 在 libjnidispatch.so 上失败的主要内容,如果未能解决你的问题,请参考以下文章
资源分享jetson xavier nx(aarch64)平台上的pytorch1.8.0+torchvision0.9.0(python=3.6)
在使用CentOS7.4的AARCH64平台上首选哪种GCC版本?
aarch64-linux-gnu-gcc 交叉编译工具链安装演示
Linux-我可以在aarch64体系结构上运行arm64二进制文件吗?