1

コードで HQL を実行しようとすると、次の例外が発生します。これをさまざまなサイトで確認したところ、antlr.2.7.6.jar shd がクラスパスにあることがわかりました。プロジェクトでこれを確認したところ、これが Maven の依存関係にあることがわかりました。したがって、そのような問題があってはなりません。しかし、それでも私はこの問題を抱えています。この点で誰でも私を助けることができますか?「empList = getHibernateTemplate().find("from Employee");」という行でこのエラーが発生しています。次の関数で。

public List<EmployeeTO> getAllEmp() {
    List<Employee> empList =  new ArrayList<Employee>();
List<EmployeeTO> empListTO =  new ArrayList<EmployeeTO>();
empList = getHibernateTemplate().find("from Employee");
try {
    BeanUtils.copyProperties(empListTO, empList);
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}
    return empListTO;
}

例外スタック トレース:

Root cause of ServletException.
     org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.myapp.domain.Employee]; nested exception is org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.myapp.domain.Employee]
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:656)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
    Truncated. see log file for complete stacktrace
Caused By: org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.myapp.domain.Employee]
    at org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:80)
    at antlr.CharScanner.setTokenObjectClass(CharScanner.java:340)
    at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:54)
    at antlr.CharScanner.<init>(CharScanner.java:51)
    at antlr.CharScanner.<init>(CharScanner.java:60)
    Truncated. see log file for complete stacktrace
4

6 に答える 6

3

正確な休止状態のニーズによっては、antlr の依存関係を完全に削除できる場合があります。これを休止状態のプロパティに追加すると、問題なく実行できる場合があります。

<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
于 2014-02-06T13:34:20.067 に答える
2

アプリケーションのクラスパスに antlr-2.7.7.jar がある weblogic 10.3 でこの問題に直面しましたが、ファイル weblogic-application.xml に「antlr.*」の優先アプリケーション パッケージを追加することで解決できました。

于 2015-01-10T04:38:49.087 に答える
1

この問題を解決しました。現在、weblogic 12c と Hibernate 3.6.9 を使用しています。

そして、あるサイトで、weblogicパス変数にantlr.2.7.6.jarファイルを追加する必要があることがわかりました。pre_compile

  1. Weblogic 12c: Java EE 6 準拠の Weblogic バージョンの場合、antlr jar 依存関係のみを追加する必要があります。
  2. 以下のファイルをダウンロードして配置します<WL_HOME>/common/lib/antlr-2.7.7.jar
  3. 上記のファイルをクラスパスに追加します

Windows の場合:

/common/bin/commEnv.cmdに以下の行を追加します

set PRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jar

Linux の場合:

/common/bin/commEnv.shに以下の行を追加します

<WL_HOME>/PRE_CLASSPATH=$WL_HOME/common/lib/antlr-2.7.7.jar

書き出すPRE_CLASSPATH

ウィンドウマシンでこれらの手順に従いました。私の場合、wl_homeはcommon/libC:\Oracle\Middleware\wlserver_12.1v内でここに設定されました。

この jar を追加し、/common/bin/ commEnv.cmdPRE_CLASSPATH=%WL_HOME%/common/lib/antlr-2.7.7.jarにセットコードを 追加して、weblogic を再起動しました。これは私にとってはうまくいきました。

于 2013-07-23T21:03:21.143 に答える