On Aug 3, 5:00 pm, Arne Vajh?j <a...@vajhoej.dk> wrote:
ankur wrote:
On Aug 3, 4:08 pm, Arne Vajh?j <a...@vajhoej.dk> wrote:
ankur wrote:
On Aug 3, 2:16 pm, Arne Vajh?j <a...@vajhoej.dk> wrote:
ankur wrote:
On Aug 3, 1:07 pm, Arne Vajh?j <a...@vajhoej.dk> wrote:
ankur wrote:
This is what my class path contains:
.;C:\Program Files\Java\jdk1.6.0\bin;C:\Documents and
Settings\Ankur
Agarwal\My Documents\eclipse\eclipse.exe;C:\Program Files\Java
\jre1.6.0_03\lib\ext\QTJava.zip;
My C:\Java Files contains thisisatest.java and NullTest.java
On windows cmd prompt I cd to C:\Java Files
and do
C:\Java Files>javac -d . NullTest.java
and then I do
C:\Java Files>javac thisisatest.java
which gives me the following error:
thisisatest.java:7: cannot access NullTest
bad class file: .\NullTest.java
file does not contain class NullTest
Please remove or make sure it appears in the correct
subdirectory of
the classpath.
NullTest var = new NullTest();
^
1 error
My NullTest.java contains:
package forpackagetest;
public class NullTest {
final int c[] = {1,2};
final int d[] = {1,2};
//c = null;
}
class abc {
}
class def {
}
My thisisatest.java contains:
import forpackagetest.*;
public class thisisatest {
public static void main ( String args[])
{
NullTest var = new NullTest();
}
}
I do not understand why am I getting the error. Could you help ?
Package structure and directory structure must match.
package forpackagetest;
means that the files mus be:
forpackagetest\NullTest.java
forpackagetest\NullTest.class
So u r saying that I should create forpackagetest folder under
C:\Java
Files manually.
Yes.
Then what would be the use of :
C:\Java Files>javac -d . NullTest.java
command ?
You will use the same command down on the forpackagetest folder !
This does not make sense to me because I thought that -d option can
create the package subdirectory for you and to instantiate a class
object you only needed the .class files (I am instantiating NullTest
object in thisisatest ).
I forgot that.
So:
javac NullTest.java
or
javac -d .. NullTest.java
down in that dir.
Arne
I started off with :
C:\Java Files> dir
Volume in drive C has no label.
Volume Serial Number is 2EB8-82AA
Directory of C:\Java Files
08/03/2008 04:45 PM <DIR> .
08/03/2008 04:45 PM <DIR> ..
08/03/2008 11:40 AM 180 NullTest.java
08/03/2008 12:30 PM 144 thisisatest.java
2 File(s) 324 bytes
2 Dir(s) 30,197,694,464 bytes free
Then I did:
C:\Java Files>javac -d . NullTest.java
which led to :
C:\Java Files>dir
Volume in drive C has no label.
Volume Serial Number is 2EB8-82AA
Directory of C:\Java Files
08/03/2008 04:48 PM <DIR> .
08/03/2008 04:48 PM <DIR> ..
08/03/2008 04:48 PM <DIR> forpackagetest
08/03/2008 11:40 AM 180 NullTest.java
08/03/2008 12:30 PM 144 thisisatest.java
2 File(s) 324 bytes
3 Dir(s) 30,197,686,272 bytes free
And
C:\Java Files\forpackagetest>dir
Volume in drive C has no label.
Volume Serial Number is 2EB8-82AA
Directory of C:\Java Files\forpackagetest
08/03/2008 04:48 PM <DIR> .
08/03/2008 04:48 PM <DIR> ..
08/03/2008 04:48 PM 200 abc.class
08/03/2008 04:48 PM 200 def.class
08/03/2008 04:48 PM 292 NullTest.class
3 File(s) 692 bytes
2 Dir(s) 30,197,686,272 bytes free
Now this gives error:
C:\Java Files>javac thisisatest.java
thisisatest.java:7: cannot access NullTest
bad class file: .\NullTest.java
file does not contain class NullTest
Please remove or make sure it appears in the correct subdirectory of
the classpath.
NullTest var = new NullTest();
^
1 error
I specifically asked you to put NullTest.java down in that dir as well.
And you may need to use:
javac -classpath . thisisatest.java
(and it should be ThisIsATest.java)
My class path is:
.;C:\Program Files\Java\jdk1.6.0\bin;C:\Documents and Settings\Ankur
Agarwal\My Documents\eclipse\eclipse.exe;C:\Program Files\Java
\jre1.6.0_03\lib\ext\QTJava.zip;
bin dir + exe + zip in "class path" ? That will never work !
Arne
I had made that change. Okay forget that:
I have :
package testpack;
public class testclass {
public static void main (String args[])
{
System.out.println("Hi there");
}
}
C:\Jfiles\testpack>dir
Volume in drive C has no label.
Volume Serial Number is 2EB8-82AA
Directory of C:\Jfiles\testpack
08/03/2008 05:32 PM <DIR> .
08/03/2008 05:32 PM <DIR> ..
08/03/2008 05:26 PM 135 testclass.java
1 File(s) 135 bytes
2 Dir(s) 30,197,583,872 bytes free
This works:
C:\Jfiles\testpack>javac testclass.java
Leads to :
C:\Jfiles\testpack>dir
Volume in drive C has no label.
Volume Serial Number is 2EB8-82AA
Directory of C:\Jfiles\testpack
08/03/2008 05:33 PM <DIR> .
08/03/2008 05:33 PM <DIR> ..
08/03/2008 05:33 PM 429 testclass.class
08/03/2008 05:26 PM 135 testclass.java
2 File(s) 564 bytes
2 Dir(s) 30,197,583,872 bytes free
Now why this error?? :
C:\Jfiles\testpack>java testclass
Exception in thread "main" java.lang.NoClassDefFoundError: testclass
(wrong name: testpack/testclass)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
java -cp .. testclass
The classpath should point to the root of the directory/package tree.