Classpath for Ant builds wrong
Answered
I'm using IntelliJ to build a project based on an Ant build file and Java 11. Inside the ant file I try to execute a javac task. The problem is that the classpath that IntelliJ generates also contains a reference to "tools.jar", but this is not present anymore in Java 11.
I tried to check all places where the classpath is set, but I didn't find any option to exclude this reference, neither did I find any place where this file actually is referenced. The classpath of my JDK 11 SDK looks correct and doesn't contain this file. Inside the build file properties I can add additional classpath entries but not remove or exclude any.
Is there any way to exclude this file?
Please sign in to leave a comment.
Building works fine for me. How did you create ant build file (what optioned did you use)? Do you get any errors when use this Ant build task? Please attach textual the output of it (Messages tool window - you can toggle tree/text mode there). Please also specify the IDE version you use.
I am using IntelliJ IDEA 2018.3.4
This is the messages output:
"C:\Program Files\Java\jdk-11.0.2\bin\java.exe" -Xmx256m -Xss2m -Dant.home=C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324 -Dant.library.dir=C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk-11.0.2!\java.base;C:\Program Files\Java\jdk-11.0.2!\java.compiler;C:\Program Files\Java\jdk-11.0.2!\java.datatransfer;C:\Program Files\Java\jdk-11.0.2!\java.desktop;C:\Program Files\Java\jdk-11.0.2!\java.instrument;C:\Program Files\Java\jdk-11.0.2!\java.logging;C:\Program Files\Java\jdk-11.0.2!\java.management;C:\Program Files\Java\jdk-11.0.2!\java.management.rmi;C:\Program Files\Java\jdk-11.0.2!\java.naming;C:\Program Files\Java\jdk-11.0.2!\java.net.http;C:\Program Files\Java\jdk-11.0.2!\java.prefs;C:\Program Files\Java\jdk-11.0.2!\java.rmi;C:\Program Files\Java\jdk-11.0.2!\java.scripting;C:\Program Files\Java\jdk-11.0.2!\java.se;C:\Program Files\Java\jdk-11.0.2!\java.security.jgss;C:\Program Files\Java\jdk-11.0.2!\java.security.sasl;C:\Program Files\Java\jdk-11.0.2!\java.smartcardio;C:\Program Files\Java\jdk-11.0.2!\java.sql;C:\Program Files\Java\jdk-11.0.2!\java.sql.rowset;C:\Program Files\Java\jdk-11.0.2!\java.transaction.xa;C:\Program Files\Java\jdk-11.0.2!\java.xml;C:\Program Files\Java\jdk-11.0.2!\java.xml.crypto;C:\Program Files\Java\jdk-11.0.2!\jdk.accessibility;C:\Program Files\Java\jdk-11.0.2!\jdk.aot;C:\Program Files\Java\jdk-11.0.2!\jdk.attach;C:\Program Files\Java\jdk-11.0.2!\jdk.charsets;C:\Program Files\Java\jdk-11.0.2!\jdk.compiler;C:\Program Files\Java\jdk-11.0.2!\jdk.crypto.cryptoki;C:\Program Files\Java\jdk-11.0.2!\jdk.crypto.ec;C:\Program Files\Java\jdk-11.0.2!\jdk.crypto.mscapi;C:\Program Files\Java\jdk-11.0.2!\jdk.dynalink;C:\Program Files\Java\jdk-11.0.2!\jdk.editpad;C:\Program Files\Java\jdk-11.0.2!\jdk.hotspot.agent;C:\Program Files\Java\jdk-11.0.2!\jdk.httpserver;C:\Program Files\Java\jdk-11.0.2!\jdk.internal.ed;C:\Program Files\Java\jdk-11.0.2!\jdk.internal.jvmstat;C:\Program Files\Java\jdk-11.0.2!\jdk.internal.le;C:\Program Files\Java\jdk-11.0.2!\jdk.internal.opt;C:\Program Files\Java\jdk-11.0.2!\jdk.internal.vm.ci;C:\Program Files\Java\jdk-11.0.2!\jdk.internal.vm.compiler;C:\Program Files\Java\jdk-11.0.2!\jdk.internal.vm.compiler.management;C:\Program Files\Java\jdk-11.0.2!\jdk.jartool;C:\Program Files\Java\jdk-11.0.2!\jdk.javadoc;C:\Program Files\Java\jdk-11.0.2!\jdk.jcmd;C:\Program Files\Java\jdk-11.0.2!\jdk.jconsole;C:\Program Files\Java\jdk-11.0.2!\jdk.jdeps;C:\Program Files\Java\jdk-11.0.2!\jdk.jdi;C:\Program Files\Java\jdk-11.0.2!\jdk.jdwp.agent;C:\Program Files\Java\jdk-11.0.2!\jdk.jfr;C:\Program Files\Java\jdk-11.0.2!\jdk.jlink;C:\Program Files\Java\jdk-11.0.2!\jdk.jshell;C:\Program Files\Java\jdk-11.0.2!\jdk.jsobject;C:\Program Files\Java\jdk-11.0.2!\jdk.jstatd;C:\Program Files\Java\jdk-11.0.2!\jdk.localedata;C:\Program Files\Java\jdk-11.0.2!\jdk.management;C:\Program Files\Java\jdk-11.0.2!\jdk.management.agent;C:\Program Files\Java\jdk-11.0.2!\jdk.management.jfr;C:\Program Files\Java\jdk-11.0.2!\jdk.naming.dns;C:\Program Files\Java\jdk-11.0.2!\jdk.naming.rmi;C:\Program Files\Java\jdk-11.0.2!\jdk.net;C:\Program Files\Java\jdk-11.0.2!\jdk.pack;C:\Program Files\Java\jdk-11.0.2!\jdk.rmic;C:\Program Files\Java\jdk-11.0.2!\jdk.scripting.nashorn;C:\Program Files\Java\jdk-11.0.2!\jdk.scripting.nashorn.shell;C:\Program Files\Java\jdk-11.0.2!\jdk.sctp;C:\Program Files\Java\jdk-11.0.2!\jdk.security.auth;C:\Program Files\Java\jdk-11.0.2!\jdk.security.jgss;C:\Program Files\Java\jdk-11.0.2!\jdk.unsupported;C:\Program Files\Java\jdk-11.0.2!\jdk.unsupported.desktop;C:\Program Files\Java\jdk-11.0.2!\jdk.xml.dom;C:\Program Files\Java\jdk-11.0.2!\jdk.zipfs;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-antlr.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-apache-bcel.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-apache-bsf.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-apache-log4j.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-apache-oro.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-apache-regexp.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-apache-resolver.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-apache-xalan2.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-commons-logging.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-commons-net.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-jai.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-javamail.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-jdepend.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-jmf.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-jsch.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-junit.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-junit4.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-junitlauncher.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-launcher.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-netrexx.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-swing.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-testutil.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant-xz.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ant.jar;C:\Users\Test\org.apache.ant_1.10.5.v20180808-0324\lib\ivy-2.4.0.jar;C:\Users\Test\.ant\lib\ivy.jar;C:\Program Files\Java\jdk-11.0.2\lib\tools.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\idea_rt.jar" com.intellij.rt.ant.execution.AntMain2 -logger com.intellij.rt.ant.execution.IdeaAntLogger2 -inputhandler com.intellij.rt.ant.execution.IdeaInputHandler -buildfile C:\Users\Test\git\Project\build.xml compile.webapp.jsp
build.xml
make.builddir
compile.webapp.jsp
Feb. 22, 2019 4:03:24 NACHM. org.apache.tomcat.util.scan.StandardJarScanner processURLs
WARNING: Failed to scan [file:/C:/Program%20Files/Java/jdk-11.0.2/lib/tools.jar] from classloader hierarchy
java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:212)
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:65)
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:374)
at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:309)
at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:266)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:229)
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262)
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104)
at org.apache.jasper.JspC.initServletContext(JspC.java:1673)
at org.apache.jasper.JspC.execute(JspC.java:1472)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.Target.performTasks(Target.java:470)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1388)
at org.apache.tools.ant.Project.executeTarget(Project.java:1361)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:834)
at org.apache.tools.ant.Main.startAnt(Main.java:223)
at org.apache.tools.ant.Main.start(Main.java:190)
at org.apache.tools.ant.Main.main(Main.java:274)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:29)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.GeneratedConstructorAccessor7.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:209)
... 31 more
Caused by: java.nio.file.NoSuchFileException: C:\Program Files\Java\jdk-11.0.2\lib\tools.jar
at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
at java.base/sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:53)
at java.base/sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(WindowsFileAttributeViews.java:38)
at java.base/sun.nio.fs.WindowsFileSystemProvider.readAttributes(WindowsFileSystemProvider.java:194)
at java.base/java.nio.file.Files.readAttributes(Files.java:1763)
at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1222)
at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:726)
at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:843)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:246)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:176)
at java.base/java.util.jar.JarFile.<init>(JarFile.java:346)
... 35 more
Feb. 22, 2019 4:03:24 NACHM. org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Feb. 22, 2019 4:03:25 NACHM. org.apache.jasper.JspC execute
INFO: Generation completed with [0] errors in [779] milliseconds
Ant build completed with 61 warnings in 15s at 22.02.2019 16:03
This is my ant task:
<target name="compile.webapp.jsp" depends="make.builddir" description="Compile JSPs">
<taskdef classname="org.apache.jasper.JspC" name="jasper2">
<classpath refid="compile.webapp.classpath" />
</taskdef>
<jasper2 validateXml="false"
uriroot="${webapp.root}"
webXmlFragment="${build}/generated_web.xml"
outputDir="${webapp.jsp.java}" />
<javac destdir="${webapp.jsp.classes}"
srcdir="${webapp.jsp.java}"
source="1.8"
target="1.8"
debug="on"
deprecation="on"
failonerror="true"
includeantruntime="false">
<classpath refid="compile.webapp.classpath" />
<compilerarg line="-Xlint -Xlint:-serial" />
</javac>
</target>
The ant task is not failed for me even there is no tools.jar in 11 JDK that I use.
How did you create the ant build?
Have you tried using bundled with IDE ant?
I tried using the bundled Ant, same result. It is still adding the tools.jar to the classpath.
What exactly do you mean by "how did you create the ant build"? The project itself was imported from an existing Eclipse project and the Ant xml file is rather old and worked fine in Eclipse. I execute it via the "Ant Build" menu and then execute the target via double click.
>I tried using the bundled Ant, same result. It is still adding the tools.jar to the classpath.
It also adds the tools.jar file but it does not fail with this error when I run it. Do you have the issue on different machines, different OSes? Thanks.
I just recreated the project from scratch. Now the task I mentioned works, although it still prints the error. I guess I had some "stop on error" option set?
I still think IntelliJ IDEA needs an update to not add the tools.jar to the classpath if building with JDK 9 or newer.
Thank you for the information. Please feel free to vote/follow the https://youtrack.jetbrains.com/issue/IDEA-208085 issue.
The issue you linked doesn't seem to be public, I get a 404 error.
For some reason it was created with restricted visibility. Corrected now, thanks.