【发布时间】:2016-11-26 19:44:46
【问题描述】:
我正在尝试制作一个需要 Eclipse 特定任务的无头构建。
为了启动 ant 构建文件,我使用以下命令。我这样做是因为我相信它允许我运行之前抱怨需要工作空间才能运行的 eclipse 任务。如果这不正确/如果有更好的方法,请通知我。
我的批处理脚本:
java -jar %EQUINOX_LAUNCHER_JAR% -application org.eclipse.ant.core.antRunner -buildfile %ANT_SCRIPT_JAR% -data %WORKSPACE_PATH%
在我的 ant 构建文件中,我需要定义一个任务:
<taskdef name="myTask" classname="path.to.class.with.execute"><classpath><pathelement location="path\to\dependency.jar"/></classpath></taskdef>
运行时
<myTask/>
我明白了
java.lang.NoClassDefFoundError: path/to/class/that/I/tried/to/import
【问题讨论】:
-
唯一的可能是 .jar 的路径错误,或者类名错误。 .jar 的路径是相对路径吗?如果是这样,它是否与构建文件相关?您是否为项目指定了一个备用的 basedir?您是否仔细检查了 .jar 是否包含该类?
-
所有路径都是绝对路径。如果我错了,请纠正我,但由于任务执行但随后出现错误,我相信这意味着我的类名设置正确。我不相信我设置了备用 basedir
-
那么 NoClassDefFoundError 不是指任务类本身?
-
是的,它指的是一个完全在 path.to.class.with.execute 所在的 jar 之外的类。
-
该类所依赖的任何类也需要在定义任务时提供的类路径中。任务可能使用的其他类的任何依赖项也是如此。