[英]java.lang.NoClassDefFoundError while trying to run PGDSpider
I am trying to run the bioinformatics software PGDSpider .我正在尝试运行生物信息学软件PGDSpider 。 Installation instructions are pretty straightforward:
安装说明非常简单:
bash./PGDSpider2.sh
.bash./PGDSpider2.sh
。 However when I try to execute the program an error appears related to Java that I don't quite understand:但是,当我尝试执行程序时,出现与 Java 相关的错误,我不太明白:
luis@luis-Inspiron-5570:PGDSpider_2.1.1.5$ bash PGDSpider2.sh
java.lang.NoClassDefFoundError: org/w3c/dom/ls/DocumentLS
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:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:861)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:773)
at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:901)
at ch.unibe.iee.cmpg.pgdspider.PGDSpider.main(PGDSpider.java:17)
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ls.DocumentLS
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 15 more
I am working on Ubuntu 20.04 and have the following version of Java:我正在研究 Ubuntu 20.04 并拥有以下版本的 Java:
(bioinfo) luis@luis-Inspiron-5570:PGDSpider_2.1.1.5$ java -version
openjdk version "14.0.1" 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+7-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 14.0.1+7-Ubuntu-1ubuntu1, mixed mode, sharing)
Any help will be pretty much appreciated.任何帮助将不胜感激。
I'm not familiar with PGDSpider, so you're going to have to do some fiddling about in the PGDSpider2.sh
script, but you should see a line that reads something akin to:我对 PGDSpider 不熟悉,因此您将不得不在
PGDSpider2.sh
脚本中进行一些摆弄,但您应该会看到类似于以下内容的行:
java PGDSpider2.jar
That line should be changed to the following:该行应更改为以下内容:
java --add-modules java.se.ee -jar PGDSpider2.jar
Again, my fix may not be perfect, so feel free to add comments which might provide more insight (such as the exact text of PGDSpider2.sh
).同样,我的修复可能并不完美,因此请随意添加可能提供更多见解的评论(例如
PGDSpider2.sh
的确切文本)。 The latest versions of Java SDK no longer include certain Java EE modules by default, and it looks like your tool was built when those modules were included.默认情况下,最新版本的 Java SDK 不再包含某些 Java EE 模块,看起来您的工具是在包含这些模块时构建的。 The strategy here is just to make them available again.
这里的策略只是让它们再次可用。
Error was solved by following the next steps:通过以下步骤解决了错误:
sudo apt-get install openjdk-8-jre
(bioinfo) luis@luis-Inspiron-5570:PGDSpider_2.1.1.5$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-14-openjdk-amd64/bin/java 1411 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-14-openjdk-amd64/bin/java 1411 manual mode
3 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number: 3
bash PGDSpider2.sh
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.