Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > the classes in rt.jar cannot be found during ant build

Reply
Thread Tools

the classes in rt.jar cannot be found during ant build

 
 
zyng
Guest
Posts: n/a
 
      04-02-2012
Hi,

In my build.xml,
<property environment="env"/>
...
<path id="project.classpath">
<fileset dir="${env.JAVA_HOME}">
<include name="jre/lib/rt.jar"/>
</fileset>
...

The environment variable JAVA_HOME has been set to: C:\Program Files\Java\jdk1.6.0_24

When I run it, those classes inside rt.jar cannot be found. I have print out, using echo, the classpath and rt.jar is included in the classpath.

I don't understand why the classes in rt.jar cannot be reached by javac.

Thank you very much.
 
Reply With Quote
 
 
 
 
Lew
Guest
Posts: n/a
 
      04-02-2012
zyng wrote:
> In my build.xml,
> <property environment="env"/>
> ...
> <path id="project.classpath">
> <fileset dir="${env.JAVA_HOME}">
> <include name="jre/lib/rt.jar"/>
> </fileset>
> ...
>
> The environment variable JAVA_HOME has been set to: C:\Program Files\Java\jdk1.6.0_24
>
> When I run it, those classes inside rt.jar cannot be found. I have print out, using echo, the classpath and rt.jar is included in the classpath.
>
> I don't understand why the classes in rt.jar cannot be reached by javac.


You don't give a complete example, for which you should follow the advice given here:
http://sscce.org/

Did you use a "<classpath refid='...'>" element or "classpathrefid='...'" attribute to the "<javac>" element that refers to your path id?

You should not include rt.jar in a regular classpath anyway. That's wrong. It's a bootclasspath JAR. In fact, you shouldn't have to refer to it explicitly at all unless you're cross-compiling between Java versions.

Give us an SSCCE.

--
Lew
 
Reply With Quote
 
 
 
 
Roedy Green
Guest
Posts: n/a
 
      04-02-2012
On Mon, 2 Apr 2012 14:07:17 -0700 (PDT), zyng <> wrote,
quoted or indirectly quoted someone who said :

> <path id="project.classpath">
> <fileset dir="${env.JAVA_HOME}">
> <include name="jre/lib/rt.jar"/>
> </fileset>


Why would you do this? Javac is a built-in ant task. It finds files
in rt.jar all by itself.

<javac source="1.6" target="1.6" srcdir="com/mindprod/replicator"
sourcepath="${basedir}" classpath="${basedir}" debug="on"
includeAntRuntime="false">

--
Roedy Green Canadian Mind Products
http://mindprod.com
When you were a child, if you did your own experiment
to see if it was better to put to cocoa into your cup first
or the hot milk first, then you likely have the programmer gene..
 
Reply With Quote
 
Arne Vajhøj
Guest
Posts: n/a
 
      04-02-2012
On 4/2/2012 5:07 PM, zyng wrote:
> In my build.xml,
> <property environment="env"/>
> ...
> <path id="project.classpath">
> <fileset dir="${env.JAVA_HOME}">
> <include name="jre/lib/rt.jar"/>
> </fileset>
> ...
>
> The environment variable JAVA_HOME has been set to: C:\Program Files\Java\jdk1.6.0_24
>
> When I run it, those classes inside rt.jar cannot be found. I have print out, using echo, the classpath and rt.jar is included in the classpath.
>
> I don't understand why the classes in rt.jar cannot be reached by javac.


You should not need to specify rt.jar like that - actually you
should not specify rt.jar like that.

So how does you javac task look like and what errors are you getting?

Arne



 
Reply With Quote
 
zyng
Guest
Posts: n/a
 
      04-03-2012
Below is a more completed build.xml. The error message

compile:
[javac] C:\my_work\build.xml:47: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to fals
for repeatable builds
[javac] Compiling 407 source files to C:\my_work\build
[javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:27: package com.sun.xml.internal.fastinfoset.stax does not exist
[javac] import com.sun.xml.internal.fastinfoset.stax.StAXDocument Parser;
[javac] ^
[javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:28: package com.sun.xml.internal.fastinfoset.stax does not exist
[javac] import com.sun.xml.internal.fastinfoset.stax.StAXDocument Serializer;
[javac] ^
[javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:29: package com.sun.xml.internal.txw2.output does not exist
....

Those packages are located inside rt.jar. (I use Eclipse and I include rt.jar in the project property, so there is no compiling error in Eclipse).

Another observation (only happens in my office computer, not in my home computer) confuses me is that: when I copy rt.jar to rt2.jar which locates in the same directory(C:\Program Files\Java\jdk1.6.0_24\jre\lib) and modify build.xml a bit:
<fileset dir="${env.JAVA_HOME}">
<include name="jre/lib/rt2.jar"/>
</fileset>

Then ant works! Very confusing. I just re-tested this observation in my home computer and it does not work -- same error message. But this approach does work in my office computer.

<project name="myproject" default="compile" basedir=".">
<property environment="env"/>
<property name="build.dir" location="build"/>
<property name="libs.dir" location="../libs"/>
<property name="externals.dir" location="${libs.dir}/external"/>
<property name="install.dir" location="${libs.dir}/installed"/>

<path id="project.classpath">
<fileset dir="${env.JAVA_HOME}">
<include name="jre/lib/rt.jar"/>
</fileset>
<pathelement location="${build.dir}"/>
<fileset dir="${externals.dir}">
<include name="abc.jar"/>
<include name="xyz.jar"/>
<include name="junit.jar"/>
</fileset>
</path>

<target name="compile">
<javac srcdir="${src.dir}" destdir="${build.dir}" compiler="modern" fork="yes" debug="on">
<classpath refid="project.classpath"/>
<compilerarg value="-Xlint"/>
</javac>
</target>
</project>
 
Reply With Quote
 
Arne Vajhøj
Guest
Posts: n/a
 
      04-03-2012
On 4/2/2012 8:16 PM, zyng wrote:
> Below is a more completed build.xml. The error message
>
> compile:
> [javac] C:\my_work\build.xml:47: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to fals
> for repeatable builds
> [javac] Compiling 407 source files to C:\my_work\build
> [javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:27: package com.sun.xml.internal.fastinfoset.stax does not exist
> [javac] import com.sun.xml.internal.fastinfoset.stax.StAXDocument Parser;
> [javac] ^
> [javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:28: package com.sun.xml.internal.fastinfoset.stax does not exist
> [javac] import com.sun.xml.internal.fastinfoset.stax.StAXDocument Serializer;
> [javac] ^
> [javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:29: package com.sun.xml.internal.txw2.output does not exist
> ...
>
> Those packages are located inside rt.jar. (I use Eclipse and I include rt.jar in the project property, so there is no compiling error in Eclipse).


Those packages are not intended to be used in your code.

You should use the documented API's.

> Another observation (only happens in my office computer, not in my home computer) confuses me is that: when I copy rt.jar to rt2.jar which locates in the same directory(C:\Program Files\Java\jdk1.6.0_24\jre\lib) and modify build.xml a bit:
> <fileset dir="${env.JAVA_HOME}">
> <include name="jre/lib/rt2.jar"/>
> </fileset>


> Then ant works! Very confusing. I just re-tested this observation in my home computer and it does not work -- same error message. But this approach does work in my office computer.
>
> <project name="myproject" default="compile" basedir=".">
> <property environment="env"/>
> <property name="build.dir" location="build"/>
> <property name="libs.dir" location="../libs"/>
> <property name="externals.dir" location="${libs.dir}/external"/>
> <property name="install.dir" location="${libs.dir}/installed"/>
>
> <path id="project.classpath">
> <fileset dir="${env.JAVA_HOME}">
> <include name="jre/lib/rt.jar"/>
> </fileset>
> <pathelement location="${build.dir}"/>
> <fileset dir="${externals.dir}">
> <include name="abc.jar"/>
> <include name="xyz.jar"/>
> <include name="junit.jar"/>
> </fileset>
> </path>
>
> <target name="compile">
> <javac srcdir="${src.dir}" destdir="${build.dir}" compiler="modern" fork="yes" debug="on">
> <classpath refid="project.classpath"/>
> <compilerarg value="-Xlint"/>
> </javac>
> </target>
> </project>


You should not explicitly ref rt.jar!

Arne
 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      04-03-2012
On Mon, 2 Apr 2012 17:16:39 -0700 (PDT), zyng <> wrote,
quoted or indirectly quoted someone who said :

>Below is a more completed build.xml. The error message


see http://mindprod.com/jgloss/jdk.html
I suspect you have not fully installed the JDK.
javac.exe needs to be on the path, for example.
--
Roedy Green Canadian Mind Products
http://mindprod.com
When you were a child, if you did your own experiment
to see if it was better to put to cocoa into your cup first
or the hot milk first, then you likely have the programmer gene..
 
Reply With Quote
 
Arne Vajhøj
Guest
Posts: n/a
 
      04-03-2012
On 4/3/2012 1:49 PM, Roedy Green wrote:
> On Mon, 2 Apr 2012 17:16:39 -0700 (PDT), zyng<> wrote,
> quoted or indirectly quoted someone who said :
>
>> Below is a more completed build.xml. The error message

>
> see http://mindprod.com/jgloss/jdk.html
> I suspect you have not fully installed the JDK.
> javac.exe needs to be on the path, for example.


With the error messages:

<quote>
compile:
[javac] C:\my_work\build.xml:47: warning: 'includeantruntime' was
not set, defaulting to build.sysclasspath=last; set to fals
for repeatable builds
[javac] Compiling 407 source files to C:\my_work\build
[javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:27: package
com.sun.xml.internal.fastinfoset.stax does not exist
[javac] import
com.sun.xml.internal.fastinfoset.stax.StAXDocument Parser;
[javac] ^
[javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:28: package
com.sun.xml.internal.fastinfoset.stax does not exist
[javac] import
com.sun.xml.internal.fastinfoset.stax.StAXDocument Serializer;
[javac] ^
[javac] C:\my_work\src\abc\efg\xml\MyXmlUtils.java:29: package
com.sun.xml.internal.txw2.output does not exist
</quote>

then javac.exe not being in the path causing the problems seems
as likely as 2+2=7.

Arne


 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      04-03-2012
On Mon, 2 Apr 2012 17:16:39 -0700 (PDT), zyng <> wrote,
quoted or indirectly quoted someone who said :

>Below is a more completed build.xml. The error message


see http://mindprod.com/jgloss/jdk.html
I suspect you have not fully installed the JDK.
javac.exe needs to be on the path, for example.
--
Roedy Green Canadian Mind Products
http://mindprod.com
When you were a child, if you did your own experiment
to see if it was better to put to cocoa into your cup first
or the hot milk first, then you likely have the programmer gene..
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to turn off those warning messages during ant build? zyng Java 34 05-07-2012 04:33 PM
Warning during generating classes through WSIMPORT & Error during xmlvalidation traveller Java 0 01-08-2008 07:00 AM
wondering how i can launch tomcat from ant without ant hanging... Chris Bedford Java 6 12-23-2004 12:41 AM
SWsoft Acronis Disk Director Suite 9.0 Build 508, Acronis OS Selector 8.0 Build 917, Acronis Partition Expert 2003 Build 292, Acronis Power Utilities 2004 Build 502, F-SECURE.ANTI vIRUS.PROXY v1.10.17.WINALL, F-SECURE.ANTI vIRUS v5.50.10260 for CITRI vvcd Computer Support 0 09-25-2004 01:38 AM
modifying ant <property> during build Parker Thompson Java 1 08-08-2003 02:15 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57