java - Ant编译但未运行或创建jar
问题描述
下面的 Ant 构建编译成功。
depends
不幸的是,尽管属性指定在编译步骤成功完成后执行运行目标,但它不会执行运行步骤。
它也不会在指定的类路径中创建 jar 文件。
构建.xml
<?xml version="1.0" encoding="UTF-8"?>
<project default="run" name="My Project">
<target name="run" depends="compile">
<java classname="com.company.program.project">
<classpath path="staging\" location="C:\my_work\Eclipse\3.6-64\plugins\"/>
</java>
</target>
<target name="compile">
<javac includeantruntime="false" srcdir="./src" destdir="staging">
<classpath>
<fileset dir="C:\my_work\Eclipse\3.6-64\plugins">
<!-- <include name="**/*.jar" /> -->
<include name="org.eclipse.swt.*.jar" />
</fileset>
</classpath>
</javac>
</target>
<jar destfile="./build/jars/swtgui.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="org.swtgui.MainGui" />
<attribute name="Class-Path" value="." />
</manifest>
<fileset dir="./bin/com/company/program/project" includes="**/*.class" />
<fileset dir="C:\my_work\Eclipse\3.6-64\plugins\" includes="org.eclipse.swt.win32.win32.x86_64_3.6.0.v3650b.jar" />
</jar>
<record name="./project.log" loglevel="verbose" action="start"/>
编辑:让它运行。没有编辑 build.xml,但Project Explorer -> build.xml -> External Tool Configurations -> Build -> Targets
由于某种原因未选中运行目标。
我检查了它,现在run
目标运行,但产生下面的错误日志。
run:
[java] running com.company.project.program with default permissions (exit forbidden)
[java] Running in same VM Executing 'com.company.project.program'
The ' characters around the executable and arguments are
not part of the command.
[java] Could not find com.company.project.program. Make sure you have it in your classpath
at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:140)
at org.apache.tools.ant.taskdefs.Java.run(Java.java:834)
at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:228)
at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:137)
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:110)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
at org.apache.tools.ant.Project.executeTarget(Project.java:1376)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:36)
at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:460)
at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:142)
[java] Java Result: -1
run: duration 0 seconds
BUILD SUCCESSFUL
BUILD SUCCESSFUL
我是否需要再编辑 xml 文件以使其运行并创建一个 jar?
解决方案
您的 jar 步骤不在“目标”内。创建一个名为“jar”的目标,它依赖于“compile”,它创建一个 jar(你的“jar”块应该在这里工作),并让目标“run”依赖它。
看起来您还需要将创建的 jar 添加到“运行”“java”类路径中。
推荐阅读
- regex - REGEX_MATCH 模式适用于任何地方,但 Google Data Studio
- algorithm - 使用深度优先搜索在迷宫中的最短距离
- matlab - SVM 对不平衡数据集的性能不佳 - 如何改进?
- java - Dr. Java 中的多个类
- python - 你能在不调用 save() 的情况下更新模型实例吗?
- c# - UNITY NullReferenceException:对象引用未设置为对象 .txt 文件到 UI 文本的实例
- bootstrap-4 - 在引导程序 4 中,是否支持在标签中包装复选框?
- java - 即使在配置 SSL 属性之后,Spring RMQ 侦听器也始终使用 PLAIN 身份验证
- python-3.x - python 在pyqt中matplotlib图形之间的变化
- c++ - 错误:LNK1104 无法打开文件“pthread.lib”