java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/impl/CompilerOptions - eclipse

I am working as an eclipse plugin developer and when I try to build my eclipse sources from command line using ant, it fails with following error.
java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/impl/CompilerOptions
I am using java 1.7_72, eclipse 44, ant 1.7.1
It was working with this configuration for long time on my machine, and it suddenly started failing with this message. I have tried various options like uninstalling and reinstalling all the possible software that could affect, gone for fresh copy of eclipse, ant and much more.
It works on my colleagues machine and we all use the same software eclipse/ant/java etc.
Any inputs are welcome.
Thanks a lot in advance.

I have been struggling with similar error using Eclipse's PDE headless product build scripts.
The error occurs when the builder executes a temporary build.xml file that it generated for my plugin. this build file compiles my plugin code.
trying to run this temporary build file manually with ant on the command line works though.
Obviously, the error suggests an issue with the JDT compiler.
Looking at the generated build.xml, I found out the following target:
<target name="properties" if="eclipse.running">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
</target>
which tells the builder to override the default JDK compiler when the property eclipse.running is true.
I added
<property name="eclipse.running" value="false"/>
at the beginning of my build script: the error disappeared and my build completed successfully

In my case, the issue also appeared during PDE headless build with Eclipse Neon. The build script property (baseLocation) was pointing to a running instance of Eclipse.
Closing Eclipse before running the build resolved the issue.
The issue appeared after an update of the Target Platform. It ended up to include a newer version of Eclipse and JDT in addition to installed version.
It showed up again after update from Eclipse Neon to 2019-03 (4.14). Adding the -data <workspace>" to the eclipse launcher command-line solved it.

Related

Eclipse Neon and Ant 1.9.6 using JCraft SSH Implementation

I changed my eclipse from kepler and ant 1.8.4 to neon and ant 1.9.6. If I run exactly the same project in Neon I got a ant build error by the following ant scp command:
<scp file="${jar.file}" todir="${user}#${host}:${destination.dir}/lib" keyfile="${privatekey}"
passphrase="${passphrase}" sftp="true" trust="true" />
BUILD FAILED C:\project\build.xml:31: com.jcraft.jsch.JSchException:
Could not send 'source.jar' to '/target/lib' - 3: Permission denied
The funny thing is, at the end the file is on the server.
In both eclipse I add the library jsch-0.1.53.jar to the ant classpath.
#StellaMaris look at this bug https://bz.apache.org/bugzilla/show_bug.cgi?id=59648
I'm using linux with Ant 1.8.4 and I have some target using scp, my colleagues running Windows, with Ant 1.9.5 have your problem and not only, it seems that Ant 1.9.5 has some regression in scp task.
Anyway the solution is using ANT 1.9.4, jsch 0.1.42 is good although here states that minimum requirement is jsch 0.1.50

Task cannot continue because ECJ is not installed -- in Eclipse ant

I have some ant task which says on first run
Task cannot continue because ECJ is not installed.
ECJ was automatically installed. Please rerun your task.
When running with standalone Ant, it runs ok second time. I don't know what is ECJ, but apparently it is installing in standalone Ant.
Contrary when running with Eclipse Ant this message persisting, i.e. ECJ is not installing into Eclipse' Ant.
How to fix the situation?
This page helped me:
In Eclipse, Go To Window->Preferences->Ant->Runtime
Select "Ant Home Entries (Default)"
Add External JAR... ecj.jar. Available in the lib folder of the Liferay Plugins SDK.
Ant should now be able to compile from your build.xml
I was facing similar issue In Windows.I did below thing.
There is one jar file(ecj.jar) inside ${ant.home}/lib folder.That file was not rechable. Setting environment variable ANT_HOME_PATH to apache ant.solved my issue.
Note: Point that variable to ant home and not to bin directory.

Grails / Groovy / GGTS: Conflicting module versions on run-app

After upgrading a Grails application from 2.2.0 to 2.2.1 I keep getting the following error when attempting to debug a Grails application from GGTS via Debug as... -> Grails Command (run-app):
Error starting Grails: nulljava.lang.ExceptionInInitializerError
at org.codehaus.groovy.runtime.InvokerHelper.<clinit>(InvokerHelper.java:62)
at groovy.lang.GroovyObjectSupport.<init>(GroovyObjectSupport.java:32)
at groovy.lang.Closure.<init>(Closure.java:221)
at groovy.lang.Closure.<init>(Closure.java:238)
at groovy.lang.Closure$1.<init>(Closure.java:205)
at groovy.lang.Closure.<clinit>(Closure.java:205)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.<clinit>(GrailsScriptRunner.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1243)
at org.codehaus.groovy.grails.cli.support.GrailsStarter.rootLoader(GrailsStarter.java:234)
at org.codehaus.groovy.grails.cli.support.GrailsStarter.main(GrailsStarter.java:262)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.0.5 and you are trying to load version 2.0.7
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerExtensionModuleFromProperties(MetaClassRegistryImpl.java:186)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerExtensionModuleFromMetaInf(MetaClassRegistryImpl.java:174)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerClasspathModules(MetaClassRegistryImpl.java:156)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:111)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:73)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:33)
... 14 more
I'm running GGTS 3.1.0.RELEASE with the Groovy Compiler 2.0 Feature 2.7.1.xx-20120921-2000-e42RELEASE and Groovy/Grails Tool Suite 3.1.0.201210061306-RELEASE-e42. The project has configured Groovy Compiler level 2.0. Eclipse Preferences say "You are currently using Groovy Compiler version 2.0.4.xx-20120921-2000-e42RELEASE".
Any hints?
i had this problem on Grails 2.2.0 on Ubuntu machine , i fixed it with the below steps :
open eclipse go to "Run as" the "Run Configurations"
choose "Environment" tab , then choose "replace native environment with specified environment "
that solved the problem for me .. hope this help
I had the same problem, I was picking up groovy-all 2.0.7 from GGTS and 2.0.8 from my grails project. To resolve the problem I removed the "Groovy Dependencies" library from the eclipse project.
Right click on project -> Properties -> Java Build Path -> Libraries (tab) -> Groovy Dependencies -> Remove
Manually delete the run-app Run Configuration so it gets recreated. This was reported as a bug on Aug. 1st, 2013. Bug report: https://issuetracker.springsource.com/browse/STS-3501
I deleted .metadata in GGTS workspace and reimport project. It works, I can run-app again.
I had the same exception, when I was trying to run JUnit tests on my Spring boot project in Eclipse only, mvn executes them fine. I'm not using Gradle or Groovy. Indeed checking the test's class path upon debug, showed two versions of groovy.jar. The work version of the groovy.jar was picked from other projects in the Eclipse workspace. I was able to fix it by removing Resolve dependencies from Workspace projects in project properties -> Maven
I had the same problem and i solved it by:
For your project: Open Run As->Run Configurations
Go to the Refresh tab
Check the Refresh resources upon completion
Press Run
That did the trick for me.
I solved it by removing the option to manually load the classpath in Run Configuration. It was using the wrong Grails version (2.5.0 instead of 2.5.1).
Basically the wrong classpath was used.
Maybe this brings someone on the correct path :)
I have no explanation why it didn't work, but I found a workaround.
I had another run target configured for the same app, but with a -Dgrails.env=... setting, which I could launch without problems. I simply copied this config and removed the parameter. That way, I basically recreated the simple launch config which previously kept failing.
Problem gone.
For me a compile from the grails command window did the trick
I had the same problem when running it through eclipse and what worked for me is to make the below changes
Go to Project properties -> Groovy Compiler ->configure workspace settings . Uncheck the checkbox "Enable checking for mismatch between project and workspace groovy compiler levels"
Another solution worked for me when Eclipse stopped being able to run my project with the "groovy-all is loaded in version ... and you are trying to load version" error.
Manually removing a groovy-all line from the .classpath fixed it.
<classpathentry kind="lib" path="Libraries/groovy-all-2.1.2.jar"/>
I found the solution in this blog post.
I had the same problem, I went to Project properties -> Groovy Compiler ->configure workspace settings and I clicked on the "Switch to" button that corresponded to one of the two versions in the error message.
I hope this will help
I know this is a GGTS question, but Google led me here and this seems to be a common issue even after several years so I'm posting this answer here. Hopefully it can help other STS users who also land here.
I had this problem with Spring Tool Suite, using Spring Boot Version 1.3.3.RELEASE and gradle version 2.14. There is some internal dependency on groovy 2.4.6 and groovy-all 2.4.6, but my Eclipse workspace Groovy Libraries are version 2.4.7. Removing the Groovy Libraries from the Spring/Gradle project properties(s) works for running those projects, but for other Groovy projects in the workspace you are stuck between a rock and a hard place. They will either run if you click yes when "Errors exist in project. Run anyway?" if you remove the Groovy libs from the properties build path, or they will not have project errors if you put the Groovy libs in the properties build path.
Resolved by adding explicit dependencies in build.gradle on groovy 2.4.7 and groovy-all 2.4.7 for Gradle projects in the workspace
compile('org.codehaus.groovy:groovy:2.4.7')
compile('org.codehaus.groovy:groovy-all:2.4.7')
and (close Eclipse STS) then removing the 2.4.6 folder(s) from the .gradle cache
<path to>\.gradle\caches\modules-2\files-2.1\org.codehaus.groovy\groovy\2.4.6
<path to>\.gradle\caches\modules-2\files-2.1\org.codehaus.groovy\groovy-all\2.4.6
and (Open STS) then right-click gradle project(s)>gradle>refresh gradle project
Now other Groovy projects in the workspace run without the 2.4.6 vs 2.4.7 conflict.
use mvn denpendency:tree to check your dependencies, maybe there exist version conflicts.
When I change the grails project's name it works correctly.
Currently (using Eclipse 2020-06, 4.16.0) none of the above solutions work any more.
Open the Run Configuration of your groovy script
Remove all User Entries from the Classpath tab
Press "Restore Default Entries"
This should add the default classpath containing your specified Groovy version as User Entry.

Ant Build Error in Eclipse IDE for Java

I have been receiving the following error and have done a lot of research and tried all of the offered solutions to no avail.
junitreport:
[junitreport] Processing C:\workspace\test123\junit\TESTS-TestSuites.xml to C:\Users\Matt\AppData\Local\Temp\null1903337257
[junitreport] Loading stylesheet jar:file:/C:/Users/Matt/Documents/Selenium/eclipse/plugins/org.apache.ant_1.8.3.v20120321-1730/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl
[junitreport] : Error! The first argument to the non-static Java function 'replace' is not a valid object reference.
[junitreport] : Error! Cannot convert data-type 'void' to 'reference'.
[junitreport] : Fatal Error! Could not compile stylesheet
[junitreport] Failed to process C:\workspace\test123\junit\TESTS-TestSuites.xml
BUILD FAILED
C:\Users\Matt\workspace\Test1\build.xml:122: Errors while applying transformations: Fatal error during transformation
I found a solution at ant junit build error inside eclipse and saying that the issue was caused by a newer version of JDK and using 1.6_31 would solve it and I tried that following instructions I found online on how to change the version of Java eclipse is using. Every time I run the build ant it returns the same error regardless of which version of Java I am using. I have tried JRE7, jdk1.7.0_05, jdk1.6.0, jdk1.6.0_31 and others that I don't have installed anymore.
I am running the following
Windows 7 Pro SP1 x64
Eclipse IDE for Java Developers Version: Juno Release Build id: 20120614-1722
org.apache.ant_1.8.3.v20120321-1730
If anyone could provide any assistance in getting this report running it would be greatly appreciated. I'm new to programming and this is very frustrating especially since I'm still learning all of the jargon and trying to be sure I am following the instructions properly. If you require anymore information from me I will provide it and I will follow any instruction given to the best of my ability. Thank you very much in advance.
While an Ant Bug Report 384757 claims that this is caused by the XSL Tranformer build into the Oracle JDK - which may be true - the problem can be fixed by changing the Ant version:
I tried some of the workarounds mentioned there. After a while, I found that the bug appears with Ant 1.8.3 (distributed in Eclipse), but not with Ant 1.8.2 (distributed in Eclipse 3.7).
The bug also does not appear with Ant 1.9.0.
I have downloaded Ant 1.9.0 and in configured Eclipse's "Run As -> Ant build..." to use the Ant 1.9.0 folder as ANT HOME. This worked.
PS: My Eclipse used Ant 1.8.3 (which did not work), but running Ant from the console used Ant 1.8.2 (which worked). This was confusing at first.
I have solved the issue by downloading apache-ant-1.9.1 and configuring it in Eclipse by changing the ANT HOME from windows--> Preferences and setting the ANT HOME to apache-ant-1.9.1.
Below workaround fixed the build issue I had...
Download the 2 jar files from the urls given below and add those to Ant-Runtime Classpath located on Eclipse at:
Window>Preferences> Ant>Runtime>Ant Home Entries
http://www.java2s.com/Code/Jar/x/Downloadxalanjar.htm
http://www.java2s.com/Code/Jar/a/Downloadapachexmlxercesjar.htm
Restart eclipse and run the Ant build.

Eclipse Ant JDK issue

I have given atask to buld the ant file.
The interestuing path is there is no JDK installed, only JVM is installed.
It seems to me that Eclipse is using internally JDK.
Now, when I run the ant file it's throwing me an exception Unable to find a javac compiler; so how Can I fix this ?
I found this in the current Eclipse help: Using the ant javac adapter
The Eclipse compiler can be used inside an Ant buildfile using the javac adapter. In order to use the Eclipse compiler, you simply need to define the build.compiler property in your buildfile.
This might also work in Eclipse 3.4. Ganymede help files aren't online.
Edited to add the ant compiler property definition:
<property name="build.compiler"
value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
Eclipse JDT (Java developement tool) is able to run on top of a JRE only as you said because it embed its own Java compiler. I think you can use this compiler to compile code outside Eclipse but I am not able yet to find ressources on the web explaining how to do this.
Moreover I am not sure you will be able to tell Ant (here I speak about Ant running outside Eclipse, because Eclipse also has its own internal Ant runner) to use this compiler instead of using the javac compiler find in default location.