0

Java7とTomcat7を使用してJSF/Hibernateアプリケーションを構築しようとしています。JavaSDKとJavaEESDKをインストールし、javaee.jarとjavaee-api-6.jarをTomcatLIBフォルダーにコピーしました。この投稿この投稿を理解することで、必要なすべてのjarが必要になります。私の知る限り、このフォルダーには、競合するリソースを持つ他のjarはありません。

  • javaee.jarファイルには、Mavenpomファイルのように見えるものだけが含まれています。その価値が何であるかわかりません。

  • 私のjavaee-api-6jarのサイズは約950kで、期待するすべての.classファイルが含まれています。私が使用しているコードは正常にコンパイルされます。Tomcatにデプロイしようとするとエラーが表示されるだけです。これらの瓶は、Glassfishインスタレーションから取られました。不思議なことに、ファイルServletException.classファイルはわずか366バイトです。

  • EclipseでTomcatを設定して、プラグインフォルダーにデプロイするのではなく、デプロイ時にIDEがTomcatを「引き継ぐ」ようにしました(デフォルトの動作)。

  • これまでに使用している関連パッケージは、javax.persistenceの「Entity」「Id」と「GeneratedValue」のみです。

  • のみjavaee-api-6.jarを使用して名前を変更しましたが、変更はjavaee-api.jarありjavaee.jarません。どうやらファイル名は重要ではありません。

Glassfish libフォルダーを詳しく調べると、関連するように見えるjarがいくつか表示されますが、完全なjavaeeパッケージではないため、Javaee-api-6.jarを移動して移動することはできません。これらは不完全であり、次のようになります。一部のクラスの実装が見つからないことを示す同様のエラー(私は想定しています)。

だから私の質問は:javax.persistenceを正しく機能させるためにTomcat 7に何を含める必要がありますか?

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetPublicMethods(Unknown Source)
at java.lang.Class.privateGetPublicMethods(Unknown Source)
at java.lang.Class.privateGetPublicMethods(Unknown Source)
at java.lang.Class.getMethods(Unknown Source)
at org.apache.tomcat.util.IntrospectionUtils.findMethods(IntrospectionUtils.java:713)
at org.apache.tomcat.util.IntrospectionUtils.setProperty(IntrospectionUtils.java:272)
at org.apache.tomcat.util.IntrospectionUtils.setProperty(IntrospectionUtils.java:261)
at org.apache.tomcat.util.digester.SetPropertiesRule.begin(SetPropertiesRule.java:215)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1282)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1543)
at org.apache.catalina.startup.Catalina.load(Catalina.java:554)
at org.apache.catalina.startup.Catalina.load(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:262)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:430)
4

1 に答える 1

6

javax.persistenceを正しく機能させるには、Tomcat 7に何を含める必要がありますか?

OracleからのJavaEESDKのダウンロードではありません。基本的に、OracleGlassfishサーバーが含まれています。あなたはJavaEEが正確に何であるかを誤解しているようです。

TomcatをGlassfishサーバーにモーフィングしようとしているときに、Tomcatで行ったすべての変更を元に戻すことを強くお勧めします。または、最初からやり直すことをお勧めします。

具体的なJPA実装を選択し、代わりにインストールする必要があります。いくつかあります:

それぞれにダウンロードリンクとまともなドキュメントが付属しています。Hibernateが最も人気があります。EclipseLinkはリファレンス実装です(したがって、Glassfishのカバーの下で使用されます)。OpenJPAは、ApacheSoftwareFoundationのもう1つです。最終的には、具体的なJPA実装のJARファイルをWebアプリケーションにドロップする必要があります(/WEB-INF/libしたがって、Tomcatではありません/lib)。

于 2012-06-11T03:32:21.760 に答える