Matt is correct: you are mixing Eclipse and Ant definitions.
So here some points by me:
* There is no default behaviour of <javac>. You have to specify the paths the
compiler should use by yourself.
* <javac ... classpath=".classpath"/> means, that the file or directory
".classpath" should be used for classpath. But the .classpath-file is not a jar
file, it is a xml file.
* I try to "translate" the .classpath:
Eclipse: <classpathentry including="**/*.java" kind="src"
output="target/classes" path="src">
Ant: <javac src="src" dest="target/classes" includes=**/*.java"/>
Eclipse: <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
Ant: not used (include current Java runtime)
Eclipse: <classpathentry kind="lib"
path="/lib/java-ext/json-simple-1.1.1/json-simple-1.1.1.jar"/>
Ant: <javac><classpath><path
entry="/lib/java-ext/json-simple-1.1.1/json-simple-1.1.1.jar"/></classpath></javac>
ore more generic
<javac><classpath><fileset dir="lib"
includes="**.*.jar"/></classpath></javac>
Eclipse: <classpathentry kind="output" path="target/classes"/>
Ant: not used (I think this controlls the "export behaviour" for
inter-project dependencies)
So combined (and tuned):
<property name="build.classes" value="target/classes"/>
<mkdir dir="${build.classes}"/>
<javac src="src" dest="${build.classes}"> <!-- includes not required -->
<classpath>
<fileset dir="lib" includes="**.*.jar"/>
</classpath>
</javac>
Jan
> -----Ursprüngliche Nachricht-----
> Von: Matt Bertolini [mailto:[email protected]]
> Gesendet: Sonntag, 17. Februar 2019 18:45
> An: Ant Users List
> Betreff: Re: Javac Run By Ant Script is Unable to Find External Jars
>
> Hi Dennis,
>
> I think you might be mixing up Eclipse concepts and Ant concepts and
> that might be causing some extra confusion. Based on your original
> email, the compiler is having issues finding your third-party
> dependencies. I believe Jaikiran is correct in saying that the <javac>
> task needs to be given some sort of classpath. The .classpath file is
> an Eclipse concept and unless there is some sort of Eclipse/Ant plugin
> I am not aware of, the .classpath file will have no effect on Ant’s,
> <javac> task. Also, I don’t believe the <javac> task has a default
> value for the classpath attribute. If no classpath or classpathref is
> specified then the compiler is not passed any classpath information.
>
> I would start by locating the folder where your third-party
> dependencies are and create a <path> element containing them like this:
>
> <path id="compile-classpath">
> <fileset dir="/the/path/to/your/third/party/jars"/>
> </path>
>
> Once you have a path defined you can pass the classpath to the <javac>
> task using a refid like this:
>
> <javac srcdir="src" destdir="bin" includeantruntime="false"
> classpathref="compile-classpath"/>
>
> Try that and see how it goes.
>
> Matt Bertolini
>
> On Sun, Feb 17, 2019 at 10:02 AM Dennis Putnam <[email protected]>
> wrote:
>
> > I apologize for being a pest but this is a problem I cannot resolve
> on
> > my own. The more I read the more confusing it gets. It seems like
> > there are thousands of ways to accomplish what I want but none make
> > any more sense than what I have. Is there no one that can help me
> > debug this problem or at least point me in the right direction?
> >
> > On 2/14/2019 9:42 AM, Dennis Putnam wrote:
> >
> > Hi Jaikiran,
> >
> > Thanks for the reply. I thought the classpath parameter defaulted to
> > "basedir"/.classpath. In any case I made the following change:
> >
> > <javac srcdir="src" destdir="bin" includeantruntime="false"
> > classpath=".classpath" />
> >
> >
> > Unfortunately that didn't help. The ant output is exactly the same.
> > FWIW here is .classpath:
> >
> > <?xml version="1.0" encoding="UTF-8"?> <classpath>
> > <classpathentry including="**/*.java" kind="src"
> > output="target/classes" path="src">
> > <attributes>
> > <attribute name="optional" value="true"/>
> > <attribute name="maven.pomderived"
> value="true"/>
> > </attributes>
> > </classpathentry>
> > <classpathentry kind="con"
> >
> path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.
> debug.ui.launcher.StandardVMType/JavaSE-1.7">
> > <attributes>
> > <attribute name="maven.pomderived"
> value="true"/>
> > </attributes>
> > </classpathentry>
> > <classpathentry kind="lib"
> > path="/lib/java-ext/json-simple-1.1.1/json-simple-1.1.1.jar"/>
> > <classpathentry kind="con"
> > path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
> > <attributes>
> > <attribute name="maven.pomderived"
> value="true"/>
> > </attributes>
> > </classpathentry>
> > <classpathentry kind="output" path="target/classes"/>
> >
> > The "lib" path is correct. I am guessing that the next tag
> essentially
> > points the pom.xml so here it is in case it matters:
> >
> > <project xmlns="http://maven.apache.org/POM/4.0.0"
> > <http://maven.apache.org/POM/4.0.0> xmlns:xsi=
> > "http://www.w3.org/2001/XMLSchema-instance"
> > <http://www.w3.org/2001/XMLSchema-instance>
> > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> > http://maven.apache.org/xsd/maven-4.0.0.xsd"
> > <http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-
> 4.
> > 0.0.xsd>
> > >
> > <modelVersion>4.0.0</modelVersion>
> > <groupId>KCBSEvents</groupId>
> > <artifactId>KCBSEvents</artifactId>
> > <version>0.0.1-SNAPSHOT</version>
> > <build>
> > <sourceDirectory>src</sourceDirectory>
> > <resources>
> > <resource>
> > <directory>src</directory>
> > <excludes>
> > <exclude>**/*.java</exclude>
> > </excludes>
> > </resource>
> > </resources>
> > <plugins>
> > <plugin>
> > <artifactId>maven-compiler-plugin</artifactId>
> > <version>3.7.0</version>
> > <configuration>
> > <source>1.7</source>
> > <target>1.7</target>
> > </configuration>
> > </plugin>
> > </plugins>
> > </build>
> > <dependencies>
> > <dependency>
> > <groupId>org.apache.httpcomponents</groupId>
> > <artifactId>httpclient</artifactId>
> > <version>4.5.6</version>
> > </dependency>
> > <dependency>
> > <groupId>commons-io</groupId>
> > <artifactId>commons-io</artifactId>
> > <version>2.5</version>
> > </dependency>
> > <dependency>
> > <groupId>org.apache.httpcomponents</groupId>
> > <artifactId>httpcore</artifactId>
> > <version>4.4.10</version>
> > </dependency>
> > <dependency>
> > <groupId>commons-codec</groupId>
> > <artifactId>commons-codec</artifactId>
> > <version>1.10</version>
> > </dependency>
> > <dependency>
> > <groupId>commons-logging</groupId>
> > <artifactId>commons-logging</artifactId>
> > <version>1.2</version>
> > </dependency>
> > </dependencies>
> >
> > Presumably the maven libraries are found from the zipfilesets in the
> > ant script.
> >
> > On 2/14/2019 8:55 AM, Jaikiran Pai wrote:
> >
> > Hi Dennis,
> >
> > On 13/02/19 11:56 PM, Dennis Putnam wrote:
> >
> > <javac srcdir="src" destdir="bin" includeantruntime="false" />
> >
> > I don't see any classpath being passed to the javac task in your
> build
> > script. You should be passing a classpath containing your jars that
> > are required to compile the source. There's more than one way to do
> that.
> > The javac task manual has more details about
> > ithttps://ant.apache.org/manual/Tasks/javac.html
> >
> >
> > -Jaikiran
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected] For
> additional
> > commands, e-mail: [email protected]
> >
> >
> >
> >
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]