簡體   English   中英

嘗試運行 PGDSpider 時出現 java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError while trying to run PGDSpider

我正在嘗試運行生物信息學軟件PGDSpider 安裝說明非常簡單:

  1. 安裝 Java7 RE。
  2. 下載 PGDSpider 應用程序。
  3. 執行命令bash./PGDSpider2.sh

但是,當我嘗試執行程序時,出現與 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

我正在研究 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)

任何幫助將不勝感激。

我對 PGDSpider 不熟悉,因此您將不得不在PGDSpider2.sh腳本中進行一些擺弄,但您應該會看到類似於以下內容的行:

java PGDSpider2.jar

該行應更改為以下內容:

java --add-modules java.se.ee -jar PGDSpider2.jar

同樣,我的修復可能並不完美,因此請隨意添加可能提供更多見解的評論(例如PGDSpider2.sh的確切文本)。 默認情況下,最新版本的 Java SDK 不再包含某些 Java EE 模塊,看起來您的工具是在包含這些模塊時構建的。 這里的策略只是讓它們再次可用。

通過以下步驟解決了錯誤:

  1. 將 Java 降級為 Java 8:

sudo apt-get install openjdk-8-jre

  1. 手動切換到這個舊版本的 java:
(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

  1. 執行 PGDSpider2 腳本

bash PGDSpider2.sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM