簡體   English   中英

GWT + IntelliJ Idea-添加服務器端庫

[英]GWT + IntelliJ Idea - adding a server side library

我正在嘗試在IntelliJ Idea 15中實現GWT項目。我對GWT及其superdev模式沒有任何問題(至少很明顯)-我可以運行一個應用程序並使用它。 我可以進行RPC呼叫。

但是,現在我試圖添加JPA / Hibernate支持以使用數據庫。 這里我有麻煩。 在項目中,我有一個GWT構面(2.6.1),一個JPA構面(具有休眠實現)和一個Web構面(用於Web dd)。 使用Open Module Settings -> Libraries -> New Project Library我添加了gwt-servlet.jar ,並使用了maven(它不是maven項目,僅使用Idea的功能)庫: c3p0:c3p0:0.9.1.2org.hibernate:hibernate-entitymanager:5.0.3.Finalorg.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

另外,在異常之前,我得到以下警告:WARN:HHH000022:遇到了c3p0屬性,但是在類路徑中未找到c3p0提供程序類。 這些屬性將被忽略。

因此,似乎服務器無法同時看到c3p0和postgre jdbc驅動程序。

我試圖用google搜索,發現的最接近的問題/解決方案就是這個答案 我已將庫同時放入項目和工件中。 但是,我不確定Jetty lib是什么意思。 如果僅使用GWT的默認服務器,在哪里可以找到Jetty安裝?

另外,對我來說似乎很奇怪的是,在我能夠通過將gwt-servlet.jar添加到庫中來解決GWT RPC的類似問題(我不記得是否正是ClassNotFoundException)之前,為什么?添加這些其他庫無濟於事? 至少看來它在休眠方面沒有任何問題,因為它提供了警告等信息。

好的,即使這是一個愚蠢的錯誤,也許將來某天其他人也會犯錯,所以這個問題供以后參考:

我將項目的SDK和源版本設置為1.6; 休眠和其他庫似乎是在相同或較低版本中編譯的。 但是,postgre驅動程序是使用較新版本編譯的-當我將源版本設置為1.7並將Java 8 SDK設置為SDK時,該程序在某些不同的異常下崩潰(但這是由於我的編程錯誤-不相關) 。 僅在嘗試(完全不顧一切)嘗試在代碼中手動創建驅動程序的新對象(不將創建委托給持久性提供程序)后,我才發現此問題-然后我得到了主要的次要版本異常,並且我知道什么是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM