0
我正在使用play-1.2.5。對於async
我在我的控制器中使用了await()方法。但是在我的應用程序啓動過程中導致await()
導致IncompatibleClassChangeError
。我真的不明白原因。await引發incompatibleClassChangeError的方法:實現類
當我評論await()
行,那個錯誤消失了。
這裏是我的位指示行動:
public static void loadScheduledConfigs() {
Future<JsonObject> future = Startup.THREAD_POOL.submit(new MyCallable());
JsonObject object = null;
/*
I also tried this
Future<JsonObject> future = new FutureTask<JsonObject>(new MyCallable());
JsonObject object = await(future);
*/
try{
object = future.get();
}catch(Exception e) {
log.error(e.getMessage(), e);
}
renderJSON(object);
}
例外:
Oops: IncompatibleClassChangeError
An unexpected error occured caused by exception IncompatibleClassChangeError: Implementing class
play.exceptions.UnexpectedException: Unexpected Error
at play.Invoker$Invocation.onException(Invoker.java:244) ~[play-1.2.5rc4.jar:na]
at play.Invoker$Invocation.run(Invoker.java:286) ~[play-1.2.5rc4.jar:na]
at Invocation.HTTP Request(Play!) ~[na:na]
Caused by: java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.7.0_07]
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) ~[na:1.7.0_07]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.7.0_07]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[na:1.7.0_07]
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[na:1.7.0_07]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.7.0_07]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_07]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_07]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_07]
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ~[na:1.7.0_07]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.7.0_07]
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ~[na:1.7.0_07]
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.7.0_07]
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) ~[na:1.7.0_07]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.7.0_07]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[na:1.7.0_07]
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[na:1.7.0_07]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.7.0_07]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_07]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_07]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_07]
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ~[na:1.7.0_07]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.7.0_07]
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ~[na:1.7.0_07]
at play.classloading.enhancers.ContinuationEnhancer.enhanceThisClass(ContinuationEnhancer.java:74) ~[play-1.2.5rc4.jar:na]
at play.CorePlugin.enhance(CorePlugin.java:297) ~[play-1.2.5rc4.jar:na]
at play.plugins.PluginCollection.enhance(PluginCollection.java:551) ~[play-1.2.5rc4.jar:na]
at play.classloading.ApplicationClasses$ApplicationClass.enhance(ApplicationClasses.java:235) ~[play-1.2.5rc4.jar:na]
at play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java:167) ~[play-1.2.5rc4.jar:na]
at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:431) ~[play-1.2.5rc4.jar:na]
at play.Play.start(Play.java:516) ~[play-1.2.5rc4.jar:na]
at play.Play.detectChanges(Play.java:642) ~[play-1.2.5rc4.jar:na]
at play.Invoker$Invocation.init(Invoker.java:198) ~[play-1.2.5rc4.jar:na]
... 1 common frames omitted
我也不知道問題出在路上,我的代碼,或一些依賴comflict導致此問題。 (我檢查了我的lib文件夾和我的項目的類路徑/依賴項,我沒有發現任何衝突的庫)
你會刪除你項目中的'tmp'目錄並重新運行它嗎? –
它對我沒有幫助。我評論此行「resp = await(future)」,錯誤消失了。我的應用成功加載 –