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.
is in classpath.