Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Netbeans中使用Eclipse链接JPA应用静态编织Ant任务?_Java_Jpa_Static_Entity_Eclipselink - Fatal编程技术网

Java 如何在Netbeans中使用Eclipse链接JPA应用静态编织Ant任务?

Java 如何在Netbeans中使用Eclipse链接JPA应用静态编织Ant任务?,java,jpa,static,entity,eclipselink,Java,Jpa,Static,Entity,Eclipselink,我使用的是Netbeans 7.1.1和Glassfish 3.1.2服务器。作为JPA提供商,我决定使用Netbeans附带的EclipseLink2.3.0。由于我想使用延迟抓取,并且我的项目由大约45个JPA实体类组成,它们之间有很多关系,所以我决定使用静态编织。此外,@Entity类位于单独的类库项目中,而persistence.xml位于EJB项目中 我已经按照这里的说明进行了操作: 我将ant任务放入build-impl.xml文件(如下所示)。使用Netbeans时正确吗?以下是b

我使用的是Netbeans 7.1.1和Glassfish 3.1.2服务器。作为JPA提供商,我决定使用Netbeans附带的EclipseLink2.3.0。由于我想使用延迟抓取,并且我的项目由大约45个JPA实体类组成,它们之间有很多关系,所以我决定使用静态编织。此外,@Entity类位于单独的类库项目中,而persistence.xml位于EJB项目中

我已经按照这里的说明进行了操作:

我将ant任务放入build-impl.xml文件(如下所示)。使用Netbeans时正确吗?以下是build-impl.xml中的代码片段:

<target name="-post-jar" description="New task definition for EclipseLink static weaving">
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/>
</target>
<target name="weaving" description="perform weaving" depends="-post-jar">
    <weave  source="${dist.jar}\MyProject.jar"
            target="${dist.jar}\MyProject_Weaved.jar"
            persistenceinfo="${dist.jar}..\..\MyProjectEE\MyProject-ejb\build\classes\META-INF\persistence.xml"
            loglevel="FINER">
        <classpath>
            <pathelement path="${dist.jar}\lib\eclipselink-2.3.0.jar"/>
            <pathelement path="${dist.jar}\lib\javaee-api-6.0.jar"/>
            <pathelement path="${dist.jar}\lib\jasypt-1.9.0.jar"/>
            <pathelement path="${dist.jar}\lib\javax.persistence-2.0.jar"/>
            <pathelement path="${dist.jar}\lib\org.eclipse.persistence.jpa.jpql_1.0.0.jar"/>
            <pathelement path="${dist.jar}\lib\joda-time-2.1.jar"/>
            <pathelement path="${dist.jar}\lib\jms.jar"/>
        </classpath>
    </weave>
</target>

我在这里犯了什么错误?

您需要将eclipselink.jar和javax.persistence.jar添加到Ant类路径中


在Netbeans中,转到Tools/Options/misscellaneous/Ant,并在那里编辑类路径。

我还必须包括org.eclipse.persistence.jpa.jpa.jpql_1.0.1.jarorg.eclipse.persistence.jpa.modelgen.processor-2.3.2.jar,以便实现编织。希望这能有所帮助。

我也在使用Netbeans 8.0.1开发带有Eclipselink 2.4.2的java ee项目,在TomEE 1.7.0中,我只是将以下内容放入我的build.xml(我从不修改build-impl.xml,因为Netbeans可以在配置、构建中修改某些内容时覆盖它):

最重要的事情是正确定义类路径

现在如果我跑

ant weaving 
将进行静态编织。构建大约需要15秒,因此我仅在测试服务器和生产服务器上以这种方式构建,而不是在我的开发环境中

如果我只是简单地运行(或使用Netbeans构建菜单)

这座建筑将在没有编织的情况下正常建造

当然,我在persistence.xml中有一个编织定义,如下所示:

<persistence-unit name="MY-PU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>mydata</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>
        <property name="eclipselink.logging.level" value="INFO"/>
        <property name="eclipselink.weaving" value="static"/>
    </properties>
</persistence-unit>

org.eclipse.persistence.jpa.PersistenceProvider
我的数据
假的

非常感谢peter!也可以在标记中直接定义类路径。此外,应该在build.xml中定义其他ant目标,而不是build-impl.xml。要运行taks,请在Netbeans IDE的文件视图中右键单击定义的任务并选择“创建快捷方式”,以分配快捷方式。感谢您的宝贵意见。我可能会按照您的设置来改进编译时间:-)
${build.classes.dir}/META-INF/persistence.xml
ant weaving 
ant dist
<persistence-unit name="MY-PU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>mydata</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>
        <property name="eclipselink.logging.level" value="INFO"/>
        <property name="eclipselink.weaving" value="static"/>
    </properties>
</persistence-unit>