Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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
Intellij idea 如何使用Ant+;智能思想_Intellij Idea_Ant_Openjpa - Fatal编程技术网

Intellij idea 如何使用Ant+;智能思想

Intellij idea 如何使用Ant+;智能思想,intellij-idea,ant,openjpa,Intellij Idea,Ant,Openjpa,这让我发疯,我很震惊这绝对是有用的 以下是我所拥有的: 智能创意11 OpenJPA2.1.1 由于openjpa被添加到已用库的列表中,我已经有了openjpa的类路径,如下所示 <path id="library.openjpa.classpath"> <fileset dir="${basedir}/lib/openjpa"> <patternset refid="library.patterns"/> </fi

这让我发疯,我很震惊这绝对是有用的

以下是我所拥有的:

  • 智能创意11
  • OpenJPA2.1.1
由于openjpa被添加到已用库的列表中,我已经有了openjpa的类路径,如下所示

<path id="library.openjpa.classpath">
    <fileset dir="${basedir}/lib/openjpa">
        <patternset refid="library.patterns"/>
    </fileset>
</path>

根据官方文件,我增加了以下目标

<target name="enhance">
    <copy includeemptydirs="false" todir="${basedir}/lib/openjpa">
        <fileset dir="src" excludes="**/*.launch, **/*.java"/>
    </copy>

    <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
        <classpath refid="library.openjpa.classpath"/>
    </taskdef>

    <openjpac>
        <classpath refid="library.openjpa.classpath"/>
    </openjpac>
</target>

这给了我一个例外

C:\work\prj\build.xml:283:org.apache.openjpa.util.MetaDataException: 无法配置MetaDataFactory (conf.newMetaDataFactoryInstance()返回null)。这可能意味着 未找到任何配置属性。确保你有一个 META-INF/persistence.xml文件,该文件在类路径中可用, 或者您用于配置的属性文件是 可用。如果您正在使用Ant,请参阅或 任务嵌套元素的属性。 如果您的OpenJPA分发jar已损坏,或者 如果您的安全策略过于严格

我用进行了测试,可以看到它打开并读取
persistence.xml

我遇到了一些问题,他得到的答案是,找到
persistence.xml
不是问题的根源

问题是:

  • 我能做些什么使它工作
  • 我是否可以跳过对
    persistence.xml
    的需求,只为我想要增强的.class文件指定模式,从而使其正常工作
  • 这是一个更为棘手的问题。如何使OpenJPA增强器在
    OpenJPA-2.1.1.jar
    所在目录以外的目录中查找
    persistence.xml

  • 您可能遗漏了文档中的一个重要部分。您的
    library.openjpa.classpath
    缺少对实体的引用以及persistence.xml文件的位置。试着加上它,看看它是怎么回事

    <path id="jpa.enhancement.classpath">
      <pathelement location="bin"/> <!-- add something like this -->
    
      <!-- lib contains all of the jars that came with the OpenJPA binary download -->
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
    </path>
    

    因此,如果没有未记录的
    属性文件
    ,我无法让它工作。这是一个适合我的版本。另外,通过
    #
    指定持久性单元也会使其失败,并出现NullReferenceException

    <target name="enhance">
        <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
            <classpath refid="library.openjpa.classpath"/>
        </taskdef>
    
        <openjpac>
            <classpath refid="library.openjpa.classpath"/>
            <classpath location="${reporting.output.dir}"/>
            <config propertiesFile = "${basedir}/src/META-INF/persistence.xml"/>
        </openjpac>
    </target>
    
    
    
    您是否已验证META-INF目录是否在类路径上?我不知道如何在Ant脚本中指定其他类路径目录。但为了确保我将
    persistence.xml
    复制到OpenJPA的jar所在的目录中。不,当它找不到我的实体时,它会在它们上给出ClassNotFound异常。我设法通过命令行和Ant使其工作。我生命中的四个小时再也回不来了。如果你把META-INF/persistence.xml放进垃圾箱,它应该会工作的。运气不好:(尽管我看到
    java.exe
    进程访问
    persistence.xml
    。我设法让它像这样工作。但我不高兴的是,我在
    propertiesFile
    属性中指定了.xml的绝对路径。你能告诉我如何通过只指定文件名并在其他地方定义额外的类路径来让它工作吗里德夫妇的选择,但它没有工作:(谢谢!