gpt4 book ai didi

java - GWT + IntelliJ Idea - 添加服务器端库

转载 作者:行者123 更新时间:2023-11-30 07:47:04 25 4
gpt4 key购买 nike

我正在尝试在 IntelliJ Idea 15 中实现一个 GWT 项目。我对 GWT 及其 superdev 模式没有任何问题(至少是明显的) - 我可以运行应用程序并使用它。我可以进行 RPC 调用。

但是,现在我正在尝试添加 JPA/Hibernate 支持以使用数据库。我在这里遇到了麻烦。在项目中,我有一个 GWT 方面 (2.6.1)、一个 JPA 方面(带有 hibernate 实现)和一个 web 方面(用于 web dd)。使用Open Module Settings -> Libraries -> New Project Library我已添加gwt-servlet.jar ,并使用maven(它不是maven项目,只是使用Idea的功能)库:c3p0:c3p0:0.9.1.2 , org.hibernate:hibernate-entitymanager:5.0.3.Final , org.postgresql:postgresql:9.3-1101-jdbc41 ;这就是配置。

使用此持久性单元属性(摘录):

                <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>

<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="20" />
<property name="hibernate.c3p0.timeout" value="300" />
<property name="hibernate.c3p0.max_statements" value="50" />
<property name="hibernate.c3p0.idle_test_period" value="3000" />

在 GWT RPC servlet 中,我尝试创建 EntityManager 实例:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("ThreatPersistenceUnit");
EntityManager em = emf.createEntityManager();
Query query = em.createQuery("SELECT a FROM Asset a");
...

但是当我尝试使用默认 GWT 运行配置(Jetty)在 IDEA 中运行它时,出现以下异常:

javax.persistence.PersistenceException: Unable to build entity manager factory

引起

Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.postgresql.Driver

此外,在异常发生之前我收到以下警告: 警告:HHH000022:遇到 c3p0 属性,但在类路径中找不到 c3p0 提供程序类;这些属性将被忽略。

看来服务器无法同时看到 c3p0 和 postgre jdbc 驱动程序。

我尝试谷歌,我发现的最接近的问题/解决方案是这个SO answer 。我已将库放入项目和工件中。但是,我不确定回复者所说的 Jetty lib 是什么意思。如果我只使用 GWT 的默认服务器,我在哪里可以找到 Jetty 安装?

另外,对我来说很奇怪的是,在我使用 GWT RPC 时遇到了类似的问题(我不记得这是否正是 ClassNotFoundException),我可以通过向库添加 gwt-servlet.jar 来解决该问题- 为什么添加这些其他库没有帮助?至少看起来它与 hibernate 没有任何问题,因为它提供了警告等。

最佳答案

好吧,即使这是一个愚蠢的错误,也许将来的某一天其他人也会犯这个错误,所以为了将来的引用,这就是问题所在:

我已将项目的SDK和源版本设置为1.6; hibernate 和其他库似乎是用相同或更低的版本编译的。但是,postgre 驱动程序是使用较新版本编译的 - 当我将源版本设置为 1.7 并将 Java 8 SDK 设置为 SDK 时,程序因某些不同的异常而崩溃(但这是由于我的编程错误 - 无关) 。我只是在尝试(完全绝望地)在代码中手动创建驱动程序的新对象(而不是将创建委托(delegate)给持久性提供程序)之后才发现这一点 - 然后我得到了主要次要版本异常,我知道什么是问题。

关于java - GWT + IntelliJ Idea - 添加服务器端库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33777464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com