[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

help in setting classpath in ant

Posted on 2004-08-14
15
Medium Priority
?
767 Views
Last Modified: 2013-11-23
i am using windows2000 and have installed ant in D Drive.
My directory structure is something like

D:\ant\source\src\com\pack1\pack2 (com\pack1\pack2 are packages)
D:\ant\source\conf.jar
D:\ant\source\datasocket.jar
D:\ant\source\thirdparty\xercesImpl.jar

and I have created the follwoing build.xml

<?xml version="1.0"?>

<project name="Proj" default="compile" basedir=".">
     <property name="name" value="Proj" />
     <property name="build" value="${basedir}\build" />
     <property name="source" value="${basedir}\source" />
     <property name="baselib" value="\source" />

        <target name="compile">
        <javac srcdir="${source}" destdir="${build}">
           <classpath>

              <pathelement location="${baselib}\mysql-connector-java-3.0.6-stable-bin.jar" />
              <pathelement location="${baselib}\photos.jar" />
              <pathelement location="${baselib}\conf.jar" />
              <pathelement location="${baselib}\jh.jar" />
              <pathelement location="${baselib}\jhall.jar" />
              <pathelement location="${baselib}\jhbasic.jar" />
              <pathelement location="${baselib}\jhsearch.jar" />
              <pathelement location="${baselib}\datasocket.jar" />
              <pathelement location="${baselib}\log4j-1.2.7.jar" />
              <pathelement location="${baselib}\thirdparty\xercesImpl.jar" />
              <pathelement location="${baselib}\thirdparty\xmlParserAPIs.jar" />


           </classpath>
       </javac>
    </target>

</project>

But when i try to execute it, i get errors  which indicate that java files cannot find the jar files that is some problem with the classpath.

   [javac] D:\ant\source\src\com\pack1\pack2\Test.java
143: cannot resolve symbol
   [javac] symbol  : class Logger
   [javac] location: class com\pack1\pack2\Test.java
   [javac]     private Logger logger = Logger.getLogger(Test.class);
...
0
Comment
Question by:thomas908
  • 8
  • 5
  • 2
15 Comments
 
LVL 9

Expert Comment

by:ronan_40060
ID: 11803385
Hello
 , MyComputer -> Properties -> Environment and then define a new variable CLASSPATH and give it some value.
 also by adding the jar file to your 'ext' directory of your jdk and jre.
let me know how it goes
ronan
0
 
LVL 8

Author Comment

by:thomas908
ID: 11803397
Thanks for replying.
Is it possible to do it from build.xml?
I don't want to set classapth in environment variables. Basically I want to give the user the option to compile the java files. It won't be very appropriate if i ask her to set the classpath in environment variables before compiling.
0
 
LVL 9

Assisted Solution

by:ronan_40060
ronan_40060 earned 1000 total points
ID: 11803461
This is with reference with build.xml examples in jaxb  
<property name="jwsdp.home" value="c:/jwsdp-1.3"/> <!-- customize this -->

    <path id="classpath">
        <pathelement path="."/>
        <!-- for use with bundled ant -->
        <fileset dir="${jwsdp.home}" includes="jaxb/lib/*.jar"/>
         <fileset dir="${jwsdp.home}" includes="jwsdp-shared/lib/*.jar"/>
       <fileset dir="${jwsdp.home}" includes="jaxp/lib/**/*.jar"/>
       
    </path>

    <taskdef classname="com.sun.tools.xjc.XJCTask" name="xjc">
        <classpath refid="classpath"/>
    </taskdef>

    <target name="compile">

        <javac debug="on" destdir="." srcdir=".">
            <classpath refid="classpath"/>
            <include name="BaseClass.java"/>
         <exclude name="Main.java"/>
        </javac>

        <!-- generate the Java content classes from the schema -->
        <echo message="Compiling the schema..."/>
        <xjc binding="binding.jxb" extension="true" package="xxx" schema="po.xsd" target="."/>
        <!-- generate the javadocs from the content classes -->
        <mkdir dir="docs/api"/>
        <javadoc destdir="docs/api" packagenames="xxx" sourcepath="." windowtitle="Generated Interfaces for po.xsd">
            <classpath refid="classpath"/>
         </javadoc>

        <!-- compile all of the java sources -->
        <echo message="Compiling the java source files..."/>
        <javac debug="on" destdir="." srcdir=".">
            <classpath refid="classpath"/>
        </javac>
    </target>
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 8

Author Comment

by:thomas908
ID: 11808365
<target name="compile" depends="CopyFiles" >
    <javac srcdir="${source}" destdir="${build}">
      <classpath>
              <pathelement location="{baselib}\mysql-connector-java-3.0.6-stable-bin.jar" />
              <pathelement location="{baselib}\photos.jar" />
              <pathelement location="{baselib}\conf.jar" />
              <pathelement location="{baselib}\jh.jar" />
              <pathelement location="{baselib}\jhall.jar" />
              <pathelement location="D:\ant\source\jhbasic.jar" />
              <pathelement location="{baselib}\jhsearch.jar" />
              <pathelement location="D:\ant\source\datasocket.jar" />
              <pathelement location="D:\ant\source\log4j-1.2.7.jar" />
              <pathelement location="{baselib}\thirdparty\xercesImpl.jar" />
              <pathelement location="{baselib}\thirdparty\xmlParserAPIs.jar" />
     </classpath>
   </javac>
</target>

For some I have specified relative paths. For I have to specify absolute paths, otherwise they are not found, Why is it so?
0
 
LVL 8

Author Comment

by:thomas908
ID: 11808368
i am using windows
0
 
LVL 35

Expert Comment

by:girionis
ID: 11808402
> For some I have specified relative paths. For I have to specify absolute paths, otherwise they
> are not found, Why is it so?

It should work with absolute paths as well.

>[javac] D:\ant\source\src\com\pack1\pack2\Test.java
>143: cannot resolve symbol
>   [javac] symbol  : class Logger
>   [javac] location: class com\pack1\pack2\Test.java
>   [javac]     private Logger logger = Logger.getLogger(Test.class);

Is the Logger class in the log4j-1.2.7.jar file? It might be missing from another jar file that you do not include in your classpath.
0
 
LVL 8

Author Comment

by:thomas908
ID: 11808549
Is <pathelement location="{baselib}\jhall.jar" />
correct way of specifying classapth
0
 
LVL 35

Expert Comment

by:girionis
ID: 11808630
Yes this is correct given that there is a "basedir" variabel defined somewhere.
0
 
LVL 8

Author Comment

by:thomas908
ID: 11808732
What i want to know is in some pathelements in classpath i am specifying the classpath as

 <pathelement location="D:\ant\source\log4j-1.2.7.jar" />

I don't think that is the right way of doing because user may create directories with differnt names. So specyfing the classpath like

 <pathelement location="{baselib}\photos.jar" />

is a better option. But in my case specfying classpath as  <pathelement location="{baselib}\photos.jar" />
does not work at some places.


classpath>
              <pathelement location="{baselib}\mysql-connector-java-3.0.6-stable-bin.jar" />
              <pathelement location="{baselib}\photos.jar" />
              <pathelement location="{baselib}\conf.jar" />
              <pathelement location="{baselib}\jh.jar" />
              <pathelement location="{baselib}\jhall.jar" />
              <pathelement location="D:\ant\source\jhbasic.jar" />
              <pathelement location="{baselib}\jhsearch.jar" />
              <pathelement location="D:\ant\source\datasocket.jar" />
              <pathelement location="D:\ant\source\log4j-1.2.7.jar" />
              <pathelement location="{baselib}\thirdparty\xercesImpl.jar" />
              <pathelement location="{baselib}\thirdparty\xmlParserAPIs.jar" />
     </classpath>

First 4 pathelemets are specified as  <pathelement location="{baselib}\photos.jar" /> whereas the 5th pathelement is specified by using complete path     <pathelement location="D:\ant\source\jhbasic.jar" /> which i want to avoid. If i write here     <pathelement location="{baselib}\jhbasic.jar" /> it doesn't work
0
 
LVL 8

Author Comment

by:thomas908
ID: 11808739
Here is complete build.xml

<?xml version="1.0"?>

<project name="M" default="compile" basedir=".">
<property name="name" value="M" />
<property name="build" value="${basedir}\build" />
<property name="source" value="${basedir}\source\src" />
<property name="baselib" value="\source" />

<target name="init" >

     <mkdir dir="build" />
     <mkdir dir="build\classes" />
</target>

<target name="ClassesCopyFiles" depends="init">
    <copy toDir="build\classes">
      <fileset dir="source\src"
        includes="**/*.*">
        <exclude name="**/*.java"/>
      </fileset>
    </copy>
</target>

<target name="CopyFiles" depends="ClassesCopyFiles">
    <copy toDir="build">
      <fileset dir="source"
        includes="**/*.*">
        <exclude name="**/*.java"/>
          <exclude name="src/**"/>
      </fileset>
    </copy>
</target>



<target name="compile" depends="CopyFiles" >
    <javac srcdir="${source}" destdir="${build}\classes">
      <classpath>
              <pathelement location="{baselib}\mysql-connector-java-3.0.6-stable-bin.jar" />
              <pathelement location="{baselib}\photos.jar" />
              <pathelement location="{baselib}\conf.jar" />
              <pathelement location="{baselib}\jh.jar" />
              <pathelement location="{baselib}\jhall.jar" />
              <pathelement location="D:\ant\source\jhbasic.jar" />
              <pathelement location="{baselib}\jhsearch.jar" />
              <pathelement location="D:\ant\source\datasocket.jar" />
              <pathelement location="D:\ant\source\log4j-1.2.7.jar" />
              <pathelement location="{baselib}\thirdparty\xercesImpl.jar" />
              <pathelement location="{baselib}\thirdparty\xmlParserAPIs.jar" />
     </classpath>
   </javac>
</target>



</project>
0
 
LVL 35

Accepted Solution

by:
girionis earned 1000 total points
ID: 11808829
> What i want to know is in some pathelements in classpath i am specifying the classpath as
>
> <pathelement location="D:\ant\source\log4j-1.2.7.jar" />
>
> I don't think that is the right way of doing because user may create directories with differnt names.

Yes you are right, it is not the proper way of doing it. What I suggest you do is to bundle everything up in a zip file and then use relative paths from there. By doing so you have control over which folder all files are unzipped and you can follow the paths from there. For exampel you can uninstall everythign into myfolder/jarFiles so you have a structure

myfolder--
        jarFiles--
                xercesImple.jar
                otherjar.jar

and so on, so since you will have everything inside the myfolder directory you can then do:

<pathelement location="./jarFiles/xercesImpl.jar" />

and so on..

And, just to try something else, what happens if you move your log4j jar file where you have the rest and try :

<target name="compile" depends="CopyFiles" >
    <javac srcdir="${source}" destdir="${build}\classes">
     <classpath>
              <pathelement location="{baselib}\mysql-connector-java-3.0.6-stable-bin.jar" />
              <pathelement location="{baselib}\photos.jar" />
              <pathelement location="{baselib}\conf.jar" />
              <pathelement location="{baselib}\jh.jar" />
              <pathelement location="{baselib}\jhall.jar" />
              <pathelement location="D:\ant\source\jhbasic.jar" />
              <pathelement location="{baselib}\jhsearch.jar" />
              <pathelement location="D:\ant\source\datasocket.jar" />
              <pathelement location="{baselib}\thirdparty\log4j-1.2.7.jar" />
              <pathelement location="{baselib}\thirdparty\xercesImpl.jar" />
              <pathelement location="{baselib}\thirdparty\xmlParserAPIs.jar" />
     </classpath>
   </javac>
</target>

are you still getting the same error message?
0
 
LVL 8

Author Comment

by:thomas908
ID: 11809922
this solved the problem. Don't know why pathelement didn't work

<path id="My.classpath" >
    <fileset dir="source">
      <include name="**/*.jar" />
    </fileset>
    <pathelement location="source" />
  </path>


<target name="compile" depends="CopyFiles" >
    <javac srcdir="${source}" destdir="${build}\classes">
        <classpath refid="My.classpath"/>
   </javac>
</target>


thanks
0
 
LVL 35

Expert Comment

by:girionis
ID: 11809965
Nice to hear problem is solved. If you are happy with the comments please accept an answer otherwise please ask a question to the Community Support forum (http://www.experts-exchange.com/Community_Support/) for zero points to PAQ the question and Refund the points back to you.
0
 
LVL 8

Author Comment

by:thomas908
ID: 11817479
Thank you so much for helping
0
 
LVL 35

Expert Comment

by:girionis
ID: 11817890
Thank you for accepting, glad we were of help :)
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
Suggested Courses
Course of the Month19 days, 13 hours left to enroll

872 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question