我知道这已经讨论了很多,但不知道以前提出的问题都不适用于我的案例。 加载我的应用程序时,我得到以下stacktrace:
//Controller-Action
$releaseQuery = new Query();
$releaseQuery->
select("`amount` AS 'Amount',
`created` AS 'Created',
`user`.`email` AS 'User',
`cinema`.`name` AS 'Cinema',
`date` AS 'Date'")->
from("`release`")->
join('left join', '`user`', '`release`.`created_by` = `user`.`id`')->
join('left join', '`cinema`', '`release`.`cinemaid` = `cinema`.`id`');
$dataProvider = new ActiveDataProvider([
'query' => $releaseQuery,
'pagination' => [
'pageSize' => 50,
],
]);
// View
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'Amount:currency',
'Created',
'User',
'Cinema',
'Date',
],
]) ?>
在大多数关于类似错误的线索中,人们确实错过了我绝对不会使用的spring-tx jar。 它在我的maven依赖项中与其他需要的弹簧罐一起声明:
Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: org/springframework/dao/DataAccessException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2663)
at java.lang.Class.getConstructor0(Class.java:3067)
at java.lang.Class.newInstance(Class.java:408)
at sun.reflect.misc.ReflectUtil.newInstance(ReflectUtil.java:51)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:923)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:967)
at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:216)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:740)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2701)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2521)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2435)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2403)
at de.festo.rs.windows.FXApplStarter$1.run(FXApplStarter.java:29)
at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl$$Lambda$55/29905907.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291)
at com.sun.javafx.application.PlatformImpl$$Lambda$54/20965065.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$141(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda$46/6575340.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataAccessException
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 24 more
在调查我的部署输出时,罐子也在那里。 然而,抛出了所提到的错误。我真的非常绝望。 请注意,该应用程序不是WebApp,而是从另一个程序加载的独立应用程序。
有趣的是,我的同事无法重现错误。出于这个原因,我猜我的JavaFX加载器将spring-jdbc查询的结果加载到其数据模型中是一种竞争条件。我没有任何证据,这只是一种直觉。 任何帮助或tipp将非常感激。 如果需要进一步的信息,请告诉我。
答案 0 :(得分:3)
解决这个问题我刚刚在基础包下移动了application.java,就像我创建了groupid demo.test.activemq并在src文件夹中创建了相同的包名,然后重新启动。它对我有用。
答案 1 :(得分:1)
类:org.springframework.dao.DataAccessException
在Spring-DAO中定义。检查是否具有以下依赖性。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-dao</artifactId>
<version>2.0.8</version>
</dependency>
答案 2 :(得分:0)
另一种可能性是,您可以通过 scope
来隐藏一些依赖项,例如test:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<scope>test</scope>
</dependency>
只需删除范围(或设置默认范围:编译)