2013-02-25 68 views
1

我試圖通過PlayFramework 2.x連接到cassandra,但我得到了常見的異常ClassNotFoundException:play.Plugin。我已經完成了維基頁面https://github.com/deanhiller/playorm/wiki/PlayFramework-2.x-support上的所有內容。這裏是我的maven(我使用mvn repository中的playorm.jar)項目http://code.google.com/p/cassandranosql-firebrandocm-playorm/source/browse/trunk/,如你所見,有一個測試類UserPlayormDaoImplTest,其中被稱爲NoSql.em();拋出ClassNotFoundException。我將plugin2.1.jar添加到類路徑中,但是它找不到該類。我不知道什麼可能是錯的。感謝幫助。PlayFramework 2.x和playorm ClassNotFoundException:play.Plugin

堆棧跟蹤:

java.lang.NoClassDefFoundError: play/Plugin 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.security.SecureClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$100(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 
at com.alvazan.play.NoSql.<clinit>(NoSql.java:16) 
at cz.muni.fi.cassandra.Playorm.UserPlayormDaoImplTest.setUp(UserPlayormDaoImplTest.java:34) 
at junit.framework.TestCase.runBare(TestCase.java:132) 
at junit.framework.TestResult$1.protect(TestResult.java:110) 
at junit.framework.TestResult.runProtected(TestResult.java:128) 
at junit.framework.TestResult.run(TestResult.java:113) 
at junit.framework.TestCase.run(TestCase.java:124) 
at junit.framework.TestSuite.runTest(TestSuite.java:243) 
at junit.framework.TestSuite.run(TestSuite.java:238) 
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) 
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.ClassNotFoundException: play.Plugin 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 30 more 
+0

今天我檢查你的代碼。您的項目結構不像Play框架項目。請注意,該播放插件僅適用於Play框架,不得以其他方式使用。您可以在https://github.com/deanhiller/playorm-server上的示例項目中看到該插件是如何用於Play framework 1.0.x的。 – Easility 2013-02-26 06:00:35

回答

1

哪打版使用的是? play.Plugin是play2.1.0框架的組成部分。你能否檢查位於play-2.1.0/repository/local/play/play_2.10/2.1.0/jars/play_2.10.jar的jar「play_2.10.jar」是否在你項目的類路徑中。

0

我的錯,我沒有將play_2.10.jar從play-2.1.0/repository/local/play/play_2.10/2.1.0/jars/play_2.10.jar添加到我的項目的類路徑中。我正在使用playframework 2.1.0(從playframework網站下載)。我加了那個jar,但現在我和其他班有類似的問題。似乎在classpath中有更多的缺少jar。 Stacktrace:

java.lang.NoClassDefFoundError: scala/Function0 
at play.api.Play.current(Play.scala) 
at play.Play.application(Play.java:12) 
at com.alvazan.play2.NoSqlForPlay2.em(NoSqlForPlay2.java:25) 
at com.alvazan.play.NoSql.em(NoSql.java:60) 
at cz.muni.fi.cassandra.Playorm.UserPlayormDaoImplTest.setUp(UserPlayormDaoImplTest.java:35) 
at junit.framework.TestCase.runBare(TestCase.java:132) 
at junit.framework.TestResult$1.protect(TestResult.java:110) 
at junit.framework.TestResult.runProtected(TestResult.java:128) 
at junit.framework.TestResult.run(TestResult.java:113) 
at junit.framework.TestCase.run(TestCase.java:124) 
at junit.framework.TestSuite.runTest(TestSuite.java:243) 
at junit.framework.TestSuite.run(TestSuite.java:238) 
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) 
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.ClassNotFoundException: scala.Function0 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 19 more 
+2

是的。如果您使用Eclipse並從您的項目目錄中「執行eclipse」,我相信這個和所有其他應該默認出現在您的播放項目中。 – Easility 2013-02-26 12:44:32