【发布时间】:2013-04-12 03:28:56
【问题描述】:
我在 Eclipse 中有一个项目,它使用 ant 来编译和 jar 类文件和引用的 jar。使用eclipse中默认java builder生成的class文件生成的jar文件工作正常,但是使用ant编译源码然后jar结果时,报错“错误:尝试打开文件时发生意外错误... ....jar" 在目标构建上执行 java -jar 时产生结果。有谁知道我做错了什么?下面是构建 xml 内容。这是我传递给 ant 的参数
-DInTouchV.SrcPath=${InTouchV.SrcPath} -DInTouchV.DropPath=${workspace_loc:/InTouchVTransferService/dist}
<project default="create_run_jar" name="Create Runnable Jar for Project InTouchVTransferService">
<!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required -->
<property name="Version" value="1.3"></property>
<tstamp>
<format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<target name="Compile_Source">
<javac srcdir="${InTouchV.SrcPath}/InTouchVTransferService/src"
destdir="${InTouchV.SrcPath}/InTouchVTransferService/bin"
classpath="${InTouchV.SrcPath}/lib/AtomClasses.jar"
debug="on"
includeantruntime="yes"
/>
</target>
<target name="create_run_jar">
<mkdir dir="${InTouchV.SrcPath}/InTouchVTransferService/bin"/>
<jar destfile="${InTouchV.DropPath}/InTouchVTransferClient.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="com.emdat.inTouchV.main.Main"/>
<attribute name="Class-Path" value="."/>
<section name="common">
<attribute name="Build-Version" value="${Version}"/>
<attribute name="Build-Date" value="${TODAY}"/>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="JVM Version" value="${java.runtime.name} - ${java.runtime.version}" />
</section>
</manifest>
<fileset dir="${InTouchV.SrcPath}/InTouchVTransferService/bin"/>
<zipfileset excludes="META-INF/*.SF" src="${InTouchV.SrcPath}/lib/AtomClasses.jar"/>
</jar>
<touch file="${InTouchV.DropPath}/Version.txt" />
<echo file="${InTouchV.DropPath}/Version.txt">${Version}</echo>
</target>
</project>
【问题讨论】:
-
您可能遇到了异步问题,在您尝试执行操作之前,jar 进程尚未完成。您可能想要进行一些日志记录,看看它在哪里爆炸更多......并提供该信息。
-
我让 winmerge 比较了两个 zip 文件,并且很明显(版本 .txt 中的时间戳)文件是相同的 :(。所有类文件都存在,清单看起来正确。我会尝试将 javac 任务移出其他目标
-
在 jar 集没有解决任何问题之前将编译步骤作为单独的目标运行 :(
-
对于它的价值,ZipFile 的 java API 源(由 jar 文件子类调用)在遇到一般 IO 异常时会给出该消息,但我可以在 7zip 中打开 jar 文件就好了. Netbeans 也可以毫无问题地解析 jar 文件。
-
我用详细的输出运行了 ant,从我所看到的来看,输出中的 ntohing 似乎很可疑,而且我无法在此处发布输出...对于此站点的最大帖子大小而言,它太大了。