2014-10-20 134 views
0

我将一个项目导入eclipse并添加了依赖项(只有oracle驱动程序和junit4)。但是,当我尝试运行该项目时,我得到一个ExceptionInInitializerError。出于某种原因,我无法初始化某些变量。变量初始化的ExceptionInInitializerError

我知道该项目是好的,所以我认为这是JDK的问题。

我曾尝试使用goggling,但我没有得到任何解决方案。

任何帮助将不胜感激。

java.lang.ExceptionInInitializerError 
at com.ats.dao.RetrievalDAO.<init>(RetrievalDAO.java:27) 
at com.ats.dao.test.RetrievalDAOTest.testinsertmessage(RetrievalDAOTest.java:49) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: java.lang.NullPointerException 
at java.util.Properties$LineReader.readLine(Unknown Source) 
at java.util.Properties.load0(Unknown Source) 
at java.util.Properties.load(Unknown Source) 
at com.ats.util.Config.<init>(Config.java:17) 
at com.ats.retriever.DBPropertiesRetriever.<clinit>(DBPropertiesRetriever.java:11) 
... 25 more 
+0

这可能不是JDK问题,因为您在您的项目类com.ats.dao.RetrievalDAO中有异常。你可以在这个类中添加几行,包括lile 27和 – 2014-10-20 18:00:59

+0

我想我们可能需要看一些代码。你可以发布第27行的RetrievalDAO.java的内容以及com.ats.util.Config.java的构造函数(第17行)吗? – ATG 2014-10-20 18:06:56

+0

我知道它不是项目类,因为它的共享存储库和所有的junit测试都通过了其他人。我之前也运行过这个项目,除了必须手动设置JRE和其他依赖关系以外,没有任何更改。我在java.util.Properties $ LineReader.readLine(Unknown Source – Jessica 2014-10-20 18:07:36

回答

2

你的堆栈跟踪告诉你你需要知道什么。这些行:

java.lang.ExceptionInInitializerError 
at com.ats.dao.RetrievalDAO.<init>(RetrievalDAO.java:27) 
at com.ats.dao.test.RetrievalDAOTest.testinsertmessage(RetrievalDAOTest.java:49) 
... 

...告诉你,你的代码是在同时被RetrievalDAOTest(大概一个单元测试)运行RetrievalDAO类的构造函数打一个错误。

Caused by: java.lang.NullPointerException 
at java.util.Properties$LineReader.readLine(Unknown Source) 
at java.util.Properties.load0(Unknown Source) 
at java.util.Properties.load(Unknown Source) 
at com.ats.util.Config.<init>(Config.java:17) 
at com.ats.retriever.DBPropertiesRetriever.<clinit>(DBPropertiesRetriever.java:11) 

......它告诉你实际的错误是在你的配置类的初始化器引起的:异常被进一步所致。检查你的配置类在第17行做了什么,以及为什么它可能会将null传递给Properties加载器。