Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

classfile has wrong name WRT package?

0 views
Skip to first unread message

hawat....@gmail.com

unread,
Jun 25, 2006, 3:46:35 AM6/25/06
to
Here I am in windows 2k:


C:\java>
C:\java>
C:\java>
C:\java>
C:\java>ant
Buildfile: build.xml

clean:
[delete] Deleting directory C:\java\build

prepare:
[mkdir] Created dir: C:\java\build\prod

compile:
[javac] Compiling 1 source file to C:\java\build\prod

package:
[jar] Building jar: C:\java\HelloWorldApp.jar

BUILD SUCCESSFUL
Total time: 49 seconds
C:\java>cd C:\java\build\prod

C:\java\build\prod>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java\build\prod

06/24/2006 11:08p <DIR> .
06/24/2006 11:08p <DIR> ..
06/24/2006 11:08p <DIR> thufir
0 File(s) 0 bytes
3 Dir(s) 786,223,104 bytes free

C:\java\build\prod>cd thufir

C:\java\build\prod\thufir>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java\build\prod\thufir

06/24/2006 11:08p <DIR> .
06/24/2006 11:08p <DIR> ..
06/24/2006 11:08p <DIR> bonjour
0 File(s) 0 bytes
3 Dir(s) 786,223,104 bytes free

C:\java\build\prod\thufir>cd bonjour

C:\java\build\prod\thufir\bonjour>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java\build\prod\thufir\bonjour

06/24/2006 11:08p <DIR> .
06/24/2006 11:08p <DIR> ..
06/24/2006 11:08p 359 HelloWorldApp.class
1 File(s) 359 bytes
2 Dir(s) 786,223,104 bytes free

C:\java\build\prod\thufir\bonjour>java HelloWorldApp
Exception in thread "main" java.lang.NoClassDefFoundError:
HelloWorldApp (wrong name: thufir/bonjour/Hel
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

C:\java\build\prod\thufir\bonjour>cd C:\java

C:\java>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java

06/24/2006 11:07p <DIR> .
06/24/2006 11:07p <DIR> ..
06/24/2006 11:07p <DIR> build
06/19/2006 03:25p 677 build.groovy
06/24/2006 11:07p 1,324 build.xml
06/24/2006 10:47p 1,398 build.xml.HelloWorldApp
06/24/2006 11:08p 962 HelloWorldApp.jar
06/24/2006 11:00p <DIR> META-INF
06/24/2006 10:34p <DIR> src
06/24/2006 10:05p <DIR> vendor
4 File(s) 4,361 bytes
6 Dir(s) 786,223,104 bytes free

C:\java>type build.xml
<?xml version="1.0"?>
<!--

Just a simple HelloWorld app

-->

<project name="Hello" default="package" basedir=".">

<property name="build.dir" location="build"/>
<property name="build.prod.dir" location="${build.dir}/prod"/>
<property name="doc.dir" location="doc"/>
<property name="index.dir" location="index"/>
<property name="src.dir" location="src"/>
<property name="test.dir" location="test"/>
<property name="vendor.lib.dir" location="vendor/lib"/>

<property name="pkg.dir" location="thufir.bonjour"/>
<property name="mainClass" location="HelloWorldApp"/>

<path id="project.classpath">
<pathelement location="${build.prod.dir}" />
</path>

<target name="clean">
<delete dir="${build.dir}" />
</target>

<target name="prepare" depends="clean">
<mkdir dir="${build.prod.dir}"/>
</target>


<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.prod.dir}">
<classpath refid="project.classpath" />
</javac>
</target>


<target name="package" depends ="compile">
<jar jarfile="HelloWorldApp.jar"
basedir="${build.prod.dir}" >
<manifest>
<attribute name="Main-Class"
value="thufir.HelloWorldApp" />
</manifest>
</jar>
</target>

</project>

C:\java>
C:\java>cd src

C:\java\src>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java\src

06/24/2006 10:34p <DIR> .
06/24/2006 10:34p <DIR> ..
06/24/2006 11:05p <DIR> thufir
0 File(s) 0 bytes
3 Dir(s) 785,772,544 bytes free

C:\java\src>cd thufir

C:\java\src\thufir>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java\src\thufir

06/24/2006 11:05p <DIR> .
06/24/2006 11:05p <DIR> ..
06/24/2006 09:58p <DIR> bonjour
0 File(s) 0 bytes
3 Dir(s) 785,772,544 bytes free

C:\java\src\thufir>cd bonjour

C:\java\src\thufir\bonjour>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java\src\thufir\bonjour

06/24/2006 09:58p <DIR> .
06/24/2006 09:58p <DIR> ..
06/24/2006 11:04p 306 HelloWorldApp.java
1 File(s) 306 bytes
2 Dir(s) 785,772,544 bytes free

C:\java\src\thufir\bonjour>type HelloWorldApp.java
package thufir.bonjour;

/**
* The HelloWorldApp class implements an application that
* simply displays "Hello World!" to the standard output.
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}

C:\java\src\thufir\bonjour>
C:\java\src\thufir\bonjour>javac HelloWorldApp.java

C:\java\src\thufir\bonjour>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java\src\thufir\bonjour

06/24/2006 11:21p <DIR> .
06/24/2006 11:21p <DIR> ..
06/24/2006 11:21p 447 HelloWorldApp.class
06/24/2006 11:04p 306 HelloWorldApp.java
2 File(s) 753 bytes
2 Dir(s) 785,772,544 bytes free

C:\java\src\thufir\bonjour>java HelloWorldApp
Exception in thread "main" java.lang.NoClassDefFoundError:
HelloWorldApp (wrong name: thufir/bonjour/HelloWorldApp)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

C:\java\src\thufir\bonjour>echo "err, bog."
"err, bog."

C:\java\src\thufir\bonjour>


The HelloWorldApp.java source file says that it's in package
thufir.bonjour, which is reflected by its path. So that's
correct, yes?

When compiled, HelloWorldApp.class ends up at
C:\java\build\prod\thufir\bonjour which is also correct. Yes?

The name of the source file, the directory structure and
the package names match, so I'm not understanding what
"doesn't have the right name."


thanks,

Thufir

Ed

unread,
Jun 25, 2006, 5:49:01 AM6/25/06
to

hawat....@gmail.com skrev:


> [mkdir] Created dir: C:\java\build\prod

>


> The HelloWorldApp.java source file says that it's in package
> thufir.bonjour, which is reflected by its path. So that's
> correct, yes?

Yes.

>
> When compiled, HelloWorldApp.class ends up at
> C:\java\build\prod\thufir\bonjour which is also correct. Yes?

Yes.

You should be able run the class-file from:
C:\java\build\prod

With command:
java thufir.bonjour.HelloWorldApp

.ed

--

www.edmundkirwan.com

hawat....@gmail.com

unread,
Jun 25, 2006, 11:04:26 AM6/25/06
to
Ed wrote:
[...]

> You should be able run the class-file from:
> C:\java\build\prod
>
> With command:
> java thufir.bonjour.HelloWorldApp
[...]

Thanks! :)

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\>cd C:\java\build\prod

C:\java\build\prod> java thufir.bonjour.HelloWorldApp
Hello World!

C:\java\build\prod>


I was looking at roedy's page on this error, but, well...

-Thufir

hawat....@gmail.com

unread,
Jun 25, 2006, 10:03:08 PM6/25/06
to
I also got the jar task working :)

However, the jarfile and Main-Class attributes are hard coded, rather
than using properties :(


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

C:\java>
C:\java>
C:\java>ant
Buildfile: build.xml

clean:
[delete] Deleting directory C:\java\build

prepare:


[mkdir] Created dir: C:\java\build\prod

compile:


[javac] Compiling 1 source file to C:\java\build\prod

package:
[jar] Building jar: C:\java\HelloWorldApp.jar

BUILD SUCCESSFUL
Total time: 27 seconds


C:\java>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java

06/25/2006 05:52p <DIR> .
06/25/2006 05:52p <DIR> ..
06/25/2006 05:51p <DIR> build


06/19/2006 03:25p 677 build.groovy

06/25/2006 05:51p 1,310 build.xml
06/24/2006 11:07p 1,324 build.xml.HelloWorldApp
06/25/2006 05:52p 967 HelloWorldApp.jar
06/25/2006 05:41p <DIR> src


06/24/2006 10:05p <DIR> vendor

4 File(s) 4,278 bytes
5 Dir(s) 816,582,656 bytes free

C:\java>java -jar HelloWorldApp.jar
Hello World!

-->

value="thufir.bonjour.HelloWorldApp" />
</manifest>
</jar>
</target>
</project>

C:\java>
C:\java>
C:\java>
C:\java>

++++++++++++++++++++++++++++++++++++++++++++++++++++++++


-Thufir

hawat....@gmail.com

unread,
Jun 25, 2006, 10:27:30 PM6/25/06
to
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\>cd java

C:\java>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java

06/25/2006 06:20p <DIR> .
06/25/2006 06:20p <DIR> ..
06/25/2006 06:19p <DIR> build


06/19/2006 03:25p 677 build.groovy

06/25/2006 06:19p 1,291 build.xml
06/25/2006 05:51p 1,310 build.xml.HelloWorldApp


06/25/2006 05:41p <DIR> src
06/24/2006 10:05p <DIR> vendor

3 File(s) 3,278 bytes
5 Dir(s) 815,157,248 bytes free

C:\java>ant
Buildfile: build.xml

clean:
[delete] Deleting directory C:\java\build

prepare:
[mkdir] Created dir: C:\java\build\prod

compile:
[javac] Compiling 1 source file to C:\java\build\prod

package:
[jar] Building jar: C:\java\HelloWorldApp.jar

BUILD SUCCESSFUL
Total time: 31 seconds
C:\java>


C:\java>dir
Volume in drive C has no label.
Volume Serial Number is FCD2-42DE

Directory of C:\java

06/25/2006 06:21p <DIR> .
06/25/2006 06:21p <DIR> ..
06/25/2006 06:20p <DIR> build


06/19/2006 03:25p 677 build.groovy

06/25/2006 06:19p 1,291 build.xml
06/25/2006 05:51p 1,310 build.xml.HelloWorldApp
06/25/2006 06:21p 967 HelloWorldApp.jar


06/25/2006 05:41p <DIR> src
06/24/2006 10:05p <DIR> vendor

4 File(s) 4,245 bytes
5 Dir(s) 815,153,152 bytes free

C:\java>java -jar HelloWorldApp.jar
Hello World!

C:\java>type build.xml
<?xml version="1.0"?>
<!--

Just a simple HelloWorld app

-->

<project name="Hello" default="package" basedir=".">

<property name="build.dir" location="build"/>
<property name="build.prod.dir" location="${build.dir}/prod"/>
<property name="doc.dir" location="doc"/>
<property name="index.dir" location="index"/>
<property name="src.dir" location="src"/>
<property name="test.dir" location="test"/>
<property name="vendor.lib.dir" location="vendor/lib"/>

<property name="pkg" value="thufir.bonjour"/>
<property name="mainClass" value="HelloWorldApp"/>

<path id="project.classpath">
<pathelement location="${build.prod.dir}" />
</path>

<target name="clean">
<delete dir="${build.dir}" />
</target>

<target name="prepare" depends="clean">
<mkdir dir="${build.prod.dir}"/>
</target>


<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.prod.dir}">
<classpath refid="project.classpath" />
</javac>
</target>


<target name="package" depends ="compile">

<jar jarfile="${mainClass}.jar"


basedir="${build.prod.dir}" >
<manifest>
<attribute name="Main-Class"

value="${pkg}.${mainClass}" />
</manifest>
</jar>
</target>
</project>

C:\java>
C:\java>


all that's left is to sign the jar, and automagically execute the jar
from ant!

-Thufir

0 new messages