gpt4 book ai didi

hibernate - 我需要在 Tomcat 7 中包含什么才能使 javax.persistence 正常工作?

转载 作者:行者123 更新时间:2023-11-28 22:34:35 25 4
gpt4 key购买 nike

我正在尝试使用 Java 7 和 Tomcat 7 构建 JSF/Hibernate 应用程序。我已经安装了 Java SDK 和 JavaEE SDK,并将 javaee.jar 和 javaee-api-6.jar 复制到我的 Tomcat LIB 中文件夹。以我的理解this postthis post我应该拥有我需要的所有 jar,据我所知,我在此文件夹中没有其他具有冲突资源的 jar。

  • javaee.jar 文件包含看起来像 Maven pom 文件的内容,仅此而已。我不确定它的值(value)是多少。

  • 我的 javaee-api-6 jar 大小约为 950k,包含我期望的所有 .class 文件。我使用的代码编译得很好,我只在尝试部署到 Tomcat 时看到错误。这些 jar 取自玻璃鱼装置。 奇怪的是 ServletException.class 文件只有 366 字节。

  • 我在 Eclipse 中设置了 Tomcat,以便 IDE 在部署时“接管”Tomcat,而不是部署到某个插件文件夹(默认行为)。

  • 到目前为止,我使用的唯一相关包是来自 javax.persistence 的“Entity”、“Id”和“GeneratedValue”。

  • 我试过只使用 javaee-api-6.jar 并将其重命名为 javaee-api.jarjavaee.jar 没有变化。文件名似乎并不重要。

对 Glassfish lib 文件夹的更深入检查确实显示了许多看起来相关的 jar,但不是完整的 javaee 包,因此我无法将 Javaee-api-6.jar 移出并移入,它们不完整我得到一个类似的错误,表明(我假设)无法找到某个类的实现。

所以我的问题是:我需要在 Tomcat 7 中包含什么才能使 javax.persistence 正常工作?

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)

最佳答案

What do I need to include in Tomcat 7 to get javax.persistence working correctly ?

不是从 Oracle 下载的 Java EE SDK。它主要包含 Oracle Glassfish 服务器。您似乎误解了 Java EE 到底是什么。

我强烈建议您在尝试将 Tomcat 转变为 Glassfish 服务器时撤消您在 Tomcat 中所做的所有更改。或者,更好的是,从头开始。

您应该选择一个具体的 JPA 实现并安装它。有几种:

每个都带有下载链接和不错的文档。 hibernate 是最受欢迎的。 EclipseLink 是引用实现(因此也是在 Glassfish 中使用的)。 OpenJPA 只是 Apache Software Foundation 的另一个产品。最终,将具体 JPA 实现的 JAR 文件放到 Web 应用程序的 /WEB-INF/lib 中(因此不是 Tomcat 的 /lib)。

关于hibernate - 我需要在 Tomcat 7 中包含什么才能使 javax.persistence 正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10974183/

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