![](/img/trans.png)
[英]SEVERE: Begin event threw error java.lang.ExceptionInInitializerError Intellij/Tomcat
[英]IntelliJ Error:java: java.lang.ExceptionInInitializerError
每次我在 IntelliJ 中遇到這個異常時,我都會簡單地修復它,然后很容易忘記修復。
代碼:
package whatever;
import org.junit.Test;
public class TestClass
{
@Test
void test() {}
}
設想:
TestClass
。TestClass
類。“消息生成”窗格顯示:
Information:javac 9-ea was used to compile java sources
Information:Module "dummy" was fully rebuilt due to project configuration/dependencies changes
Information:8/16/17 11:35 PM - Compilation completed with 1 error and 0 warnings in 1s 663ms
Error:java: java.lang.ExceptionInInitializerError
go 可能有什么錯誤?
在這個簡單的場景中可能會出現什么問題?
IntelliJ:社區 2017.1 (idea-IC-171.4424.56)
為了解決這個問題,我這樣做:
詳情
顯然,問題在於所選 JDK-s 的構建(java 9)和運行(java 8)存在差異。
我不確定如何在同一項目中重新選擇“9-ea”——IntelliJ 本身既沒有在“9-ea”JRE 中運行(根據 Help -> About),也沒有將JAVA_HOME
env var 設置為它或其他可能的設置(如 Maven -> Runner)建議任何“9-ea”。
我也沒有設法在它被編譯的同一個 JDK (java 9) 下運行測試。 但是,不清楚 JDK 測試是在什么環境下運行的,因為 IntelliJ 僅報告有關 JDK 的編譯。
如果您使用 Lombok:對我來說,這是在 pom.xml 中為我的 maven lombok 依賴項設置最新版本的解決方案。
*<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.8</version>
</dependency>*
一旦我在我的機器上安裝了 Java 11,我就開始看到這個異常。 JAVA_HOME
默認指向 Java 11,而我的項目仍在 Java 8 中。將JAVA_HOME
更改為 Java 8 jdk 為我解決了這個問題。
如果您有多個項目,每個項目都在不同的 JDK 上運行,請使用此命令臨時更改每個命令的 Java 版本。
JAVA_HOME=/path/to/JVM/jdk/Home mvn clean install
當我嘗試在 IntelliJ-2019.2 版本中運行我的應用程序時,我遇到了同樣的錯誤。 以下是我為解決此問題而遵循的步驟。
版本:
IntelliJ : IDEA-IntelliJ-2019.2
Java:jdk1.8_221
文件 -> 項目結構 -> 項目 -> 項目 SDK ->(選擇您要使用的 java 版本)
(在我的情況下,選擇了“項目 SDK”java-11,我將其更改為“java8”)
我覺得我遇到了這個問題,因為 IntelliJ 試圖使用內置的 java-11 編譯我的 java 類,而我的 java 類是建立在 java-8 上的。 所以當我在 IntelliJ 中明確配置 java-8 時,它起作用了!! 希望這會有所幫助。
如果您最近更新了 IDE,則可以嘗試這些步驟。
我遇到了與JAR s 和Jena類似的問題(從 IntelliJ 運行時它有效)。
我在我的項目中使用Apache Jena v4.0.0並構建了一個 JAR(主 class 用於 JAR 作為控制台應用程序)。
JAR 使用 IntelliJ 成功構建,但運行時拋出java.lang.ExceptionInInitializerError... Caused by: java.lang.NullPointerException
。 NPE 提示某些內容未正確初始化。
使用先前版本Jena 3.17.0構建的 jar 完美運行。
我做了什么來修復它
我打開了兩個 JARs,比較了它們的META-INF
文件夾並遇到了差異
my.jar\META-INF\services\org.apache.jena.sys.JenaSubsystemLifecycle
新版本(jena v4.0.0)只包含一行:
org.apache.jena.tdb.sys.InitTDB
舊版本 (jena v3.17.0) 包含兩個不同的行:
org.apache.jena.riot.system.InitRIOT
org.apache.jena.sparql.system.InitARQ
我已經將舊的兩行添加到文件中,並用它重新打包了新的 JAR:
org.apache.jena.tdb.sys.InitTDB
org.apache.jena.riot.system.InitRIOT
org.apache.jena.sparql.system.InitARQ
它解決了我的問題。
更新:最近的Jena v4.4.0構建了相同的“錯誤”。
我不是專家,可能有比手動修補 JAR 更好的方法。
但我仍然希望這個解決方案能幫助像我這樣的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.