I've figured out what the problem is but I don't know what to do to fix it. When I export the jar from Eclipse, it has this set of directories:
KCBSEvents
META-INF
mozilla
org
src
That is the one that works. When I build the jar using ant (below),
these are the directories present:
KCBSEvents
META-INF
It is obvious now what the problem is. I just need to know how to get
ant to include those same directories.
On 2/21/2019 10:18 AM, Dennis Putnam wrote:
> I found an article on adding Maven dependencies to my ant script.
> While I'm getting a successful build but the same exception when I run
> the jar, I hope this is getting me closer. At least the pom.xml is in
> the build. I am wondering if the added *fileset* is right and working.
> Here is my latest:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project name="KCBSEvents" default="jar" basedir="."
> *xmlns:artifact="antlib:org.apache.maven.artifact.ant"*>
> <property name="build.properties" value="build.properties"/>
> <property name="resources" value="resource" />
> <property name="jardir" value="KCBSEvents" />
> <property name="KCBSDir" value="src/KCBSEvents" />
> <property name="member.number" value="000000" />
> <property name="member.name" value="" />
> <property name="jarpath"
> value="/${user.home}/.m2/repository" />
> *<path id="maven-ant-tasks.classpath"
> path="/lib/jvm-exports/maven-ant-tasks-2.1.3.jar" />**
> ** <typedef
> resource="org/apache/maven/artifact/ant/antlib.xml"
> uri="antlib:org.apache.maven.artifact.ant"
> classpathref="maven-ant-tasks.classpath" />**
> ** <artifact:pom id="pomfile" file="pom.xml" />**
> ** <artifact:dependencies filesetId="mvn-dependencies"
> pomRefId="pomfile" />*
> <path id="compile-jars">
> <multirootfileset
>
> basedirs="${jarpath}/commons-io/2.5,${jarpath}/httpcomponents-client,${jarpath}/commons-logging/1.2,${jarpath}/commons-codec/1.10,/lib/java-ext/json-simple-1.1.1">
> <include name="commons-io-2.5.jar" />
> <include name="httpclient-4.5.6.jar" />
> <include name="httpcore-4.4.10.jar" />
> <include name="commons-logging-1.2.jar" />
> <include name="commons-codec-1.10.jar" />
> <include name="json-simple-1.1.1.jar" />
> </multirootfileset>
> *<fileset refid="mvn-dependencies" />*
> </path>
> <target name="checkOS">
> <condition property="isWindows">
> <os family="windows" />
> </condition>
> <condition property="isLinux">
> <os family="unix" />
> </condition>
> </target>
> <target name="if_windows" depends="checkOS" if="isWindows">
> <property name="jarfile"
> value="C:\temp\KCBSEvents.jar" />
> <property name="antcontrib"
> value="H:\html\Applets\ant-contrib" />
> </target>
> <target name="if_linux" depends="checkOS" if="isLinux">
> <property name="jarfile"
> value="/tmp/${member.number}/KCBSEvents.jar" />
> <property name="antcontrib"
> value="/var/www/html/Applets/ant-contrib/ant-contrib-1.0b3.jar" />
> </target>
> <target name="setclass" depends="if_linux,if_windows">
> <taskdef
> resource="net/sf/antcontrib/antcontrib.properties">
> <classpath>
> <pathelement
> location="${antcontrib}" />
> </classpath>
> </taskdef>
> </target>
> <target name="incserial" depends="setclass">
> <copy todir="bin/${jardir}/${resources}">
> <fileset dir="${KCBSDir}/${resources}">
> <include name="${build.properties}" />
> </fileset>
> <filterchain>
> <expandproperties />
> </filterchain>
> </copy>
> <if> <isset Property="build.number" /> <then>
> <echo message="update build requested" />
> </then> <else>
> <echo message="new build requested" />
> <buildnumber />
> </else> </if>
> <propertyfile
> file="bin/${jardir}/${resources}/${build.properties}">
> <entry key="serialnumber"
> value="${build.number}" />
> <entry key="membernumber"
> value="${member.number}" />
> <entry key="name" value="${member.name}" />
> </propertyfile>
> <echo message="serial number: ${build.number}" />
> </target>
> <target name="jar" description="Compile serialized jar"
> depends="incserial,if_windows,if_linux">
> <echo message="Using destination file ${jarfile}" />
> <javac srcdir="src" destdir="bin"
> includeantruntime="false" classpathref="compile-jars" />
> <jar destfile="${jarfile}" basedir="bin"
> filesetmanifest="mergewithoutmain">
> <manifest>
> <attribute name="Manifest-Version"
> value="1.0"/>
> <attribute name="Created-By"
> value="ant 1.9.2 on CentOS 7" />
> <attribute name="Main-Class"
> value="KCBSEvents.KCBSEvents" />
> </manifest>
> </jar>
> </target>
> </project>
>
>
> On 2/20/2019 3:22 PM, Jan Matèrne (jhm) wrote:
>> If you have created your JAR the first step is done.
>>
>> Starting the JAR could be done in several ways. Common is that you have to
>> have all external classes on the runtime classpath:
>>
>>
>>
>> 1. Hard coded start script.
>>
>> Write a bash/bat-Script with the java command with all cp settings, e.g.
>> (bat)
>>
>> @echo off
>>
>> java -cp /build/myjar.jar;lib/one.jar;lib/two.jar;lib/three.jar
>> org.acme.Main %*
>>
>>
>>
>> 2. Wrapper script which collects all JARs in a dynamic way (see
>> ant.bat|ant.sh)
>>
>>
>>
>> 3. Use Ant + <java><classpath> for starting
>>
>>
>>
>> 4. Create a runnable JAR which references the external JARs (manifest:
>> main-class + classpath)
>>
>>
>>
>> 5. Create a shaded jar (uber jar, fat jar): include all classes from
>> external jars into your jar
>>
>>
>>
>> 6. Use a launcher which uses a dependency manager for getting the classpath
>>
>>
>>
>>
>>
>>
>>
>> You don't have to replicate path definitions in your buildfile, you could
>> (and should) use references:
>>
>> <javac><classpath id="runtime.cp"><fileset dir="lib" includes="**/*.jar"/>…
>>
>> <java><classpath refid="runtime.cp"/>
>>
>>
>>
>>
>>
>> You mave have a look at
>> http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html
>>
>>
>>
>>
>>
>> Jan
>>
>>
>>
>
signature.asc
Description: OpenPGP digital signature
