【发布时间】:2011-07-05 19:51:48
【问题描述】:
我正在使用 Hibernate3 开发 JPA-2.0 应用程序。它在 Eclipse 中运行良好,但如果从生成的可运行 jar 运行它,它会给出 javax.persistence.PersistenceException: Unable to configure EntityManagerFactory:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: javax.persistence.PersistenceException: Unable to configure EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:374)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1937)
at org.hibernate.ejb.packaging.JarVisitorFactory.getJarURLFromURLEntry(JarVisitorFactory.java:55)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:340)
... 12 more
如果我解压同一个 jar 并直接运行该类,它仍然可以工作:
java -cp .:<add list to all .jar files> MainClass
我不知道出了什么问题。
【问题讨论】:
-
真正的例外是别的东西。请发布完整的堆栈跟踪。你知道的,说明实际原因的那个:-)
-
我添加了更完整的堆栈跟踪。
-
您是否在 jar 清单中添加/检查了类路径依赖项?也许 pom 中的显式 utf8 编码会有所帮助。
标签: eclipse hibernate persistence jpa-2.0