Jakarta ee TomEE找不到JPA 2.1类

Jakarta ee TomEE找不到JPA 2.1类,jakarta-ee,jpa,Jakarta Ee,Jpa,我正在开发一个RESTful应用程序,并希望将其部署到TomEE服务器上。在我向服务器发出请求之前,一切都很好,当服务器抛出一些根异常时:java.lang.ClassNotFoundException:javax.persistence.StoredProcedureRequesty。我在网上搜索过,但什么也没找到。而且我没有使用hibernate 编辑:发布我的配置 pom.xml: `<project xmlns="http://maven.apache.org/POM/4.0.0"

我正在开发一个RESTful应用程序,并希望将其部署到TomEE服务器上。在我向服务器发出请求之前,一切都很好,当服务器抛出一些根异常时:
java.lang.ClassNotFoundException:javax.persistence.StoredProcedureRequesty
。我在网上搜索过,但什么也没找到。而且我没有使用hibernate

编辑:发布我的配置

pom.xml:

`<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>JobManager-core</artifactId>

<parent>
    <groupId>...</groupId>
    <artifactId>JobManager-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../JobManager-parent/</relativePath>
</parent>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>com.eclipsesource.jaxrs</groupId>
        <artifactId>provider-gson</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>18.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>10.11.1.1</version>
    </dependency>

</dependencies>

</project>`
`
4.0.0
作业管理器核心
...
作业管理器父级
0.0.1-快照
../JobManager父级/
maven汇编插件
包裹
单一的
带有依赖项的jar
com.eclipsesource.jaxrs
提供商gson
2.1
番石榴
番石榴
18
org.eclipse.persistence
org.eclipse.persistence.jpa
2.6.0
org.apache.derby
德比
10.11.1.1
`
persistence.xml

 `<?xml version="1.0" encoding="UTF-8"?>
  <persistence version="2.1"
 xmlns="http://xmlns.jcp.org/xml/ns/persistence"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="JobManager-core"
    transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.sap.manager.app.entities.Job</class>

    <properties>
        <property name="eclipselink.target-database" value="Derby" />
        <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
        <property name="javax.persistence.jdbc.url"
            value="jdbc:derby:C:\Users\I322829\Derby\MyDB\Manager;create=true" />

        <property name="eclipselink.ddl-generation" value="create-tables" />
        <property name="eclipselink.ddl-generation.output-mode"
            value="database" />
    </properties>
</persistence-unit>
`
org.eclipse.persistence.jpa.PersistenceProvider
com.sap.manager.app.entities.Job


编辑2:我没有显示RESTful api的pom.xml,因为它正在使用我的文件系统(在我切换到数据库后开始抛出异常)。

TomEE正式支持JavaEE 6,而
@storedProcedurey
仅在JavaEE 7之后才可用。如果您想使用这个新版本的API,特别是使用eclipselink,您需要将eclipselink包括到WAR应用程序中。或者,您可以将此eclipselink放入TomEE服务器安装中,以便应用程序可用。旁注:请注意,TomEE使用OpenJPA库提供JPA功能,您的应用程序似乎请求eclipselink,因此在应用程序服务器或应用程序中包含eclipselink将是一件好事,即使TomEE支持最新的JPA版本。

发布您的相关配置。如果您想使用JPA API v2.1,则需要将该jar放入类路径中。在“org.eclipse.persistence”下查找类似javax.persistence或persistenceAPI的内容。@Neil:OP使用的是TomEE,而不是Tomcat。此外,“类路径”仅与基于JavaSE的CLI应用程序相关。OP正在尝试使用Java EE web应用程序存档。类路径与任何Java进程相关,并且是ClassNotFoundException的原因。是的,在JavaEE中,您将东西放在不同的位置,但这只是为您安排运行时类路径的容器。这些类必须以任何一种方式出现。Java的运行时类路径被正式指定为“类路径”。CLI环境变量称为CLASSPATH。确切地说,环境变量在任何JavaSE/EE应用程序归档中都是不相关的,并且是初学者中许多混淆和误导的来源。请注意这一点,否则初学者会毫无根据地摆弄环境变量。