我是一名eclipse插件开发人员,当我尝试使用ant从命令行构建eclipse源时,它失败了,出现以下错误。java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/impl/CompilerOptions
我使用java 1.7_72, eclipse 44, ant 1.7.1
在我的机器上用这个配置工作了很长时间,它突然开始失败,显示这个消息。我尝试了各种各样的选择,比如卸载和重新安装所有可能影响的软件,去找新的eclipse副本,ant等等。它可以在我同事的机器上工作,我们都使用相同的软件eclipse/ant/java等。欢迎提供任何意见
我一直在使用Eclipse的PDE无头产品构建脚本时遇到类似的错误。
当构建器执行它为我的插件生成的临时build.xml
文件时,会发生错误。这个构建文件编译我的插件代码。
尝试在命令行上使用ant手动运行此临时构建文件。
显然,这个错误表明JDT编译器有问题。
查看生成的build.xml
,我发现了以下目标:
<target name="properties" if="eclipse.running">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
</target>
告诉构建器在属性eclipse.running
为true
时重写默认的JDK编译器。
我添加了
<property name="eclipse.running" value="false"/>
在我的构建脚本开始时:错误消失了,我的构建成功完成
在我的案例中,这个问题在使用Eclipse Neon构建PDE时也出现了。构建脚本属性(baseLocation
)指向一个正在运行的Eclipse实例。在运行构建之前关闭Eclipse解决了这个问题。
该问题在更新目标平台后出现。最后,除了已安装的版本之外,还包含了一个更新版本的Eclipse和JDT。
从Eclipse Neon更新到2019-03(4.14)后再次出现。将-data <workspace>"
添加到eclipse启动器命令行解决了这个问题。