File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes class file contains wrong class error , i dont understand it so fandmental Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


Win a copy of The Mikado Method this week in the Agile and other Processes forum!
JavaRanch » Java Forums » Java » Beginning Java
Reply Bookmark "class file contains wrong class error , i dont understand it so fandmental " Watch "class file contains wrong class error , i dont understand it so fandmental " New topic
Author

class file contains wrong class error , i dont understand it so fandmental

Meir Yan
Ranch Hand

Joined: Apr 27, 2006
Posts: 597
Hello all
yes i beggienr thank you for asking ...
i have simple 2 java class's that i can't compile right .
my first java class MyStruct.java i compile it like that :
%JAVA_HOME%\bin\javac -d D:\ Java\test MyStruct.java
the file lookes like this :


and it creates me the class in com/lb/mystruct/ folder

now the second java file looks like this :



and I sittes in D:\ Java\test
when I try to compile it like this :
%JAVA_HOME%\bin\javac -cp D:\Java\test\com\lb\mystruct MyTest.java

im getting the error:


MyTest.java:2: package com.lb.mystruct does not exist
import com.lb.mystruct.*;
^
MyTest.java:10: cannot access MyStruct
bad class file: D:\ Java\test\com\lb\mystruct\MyStruct.class
class file contains wrong class: com.lb.mystruct.MyStruct
Please remove or make sure it appears in the correct subdirectory of the classpath.
MyStruct ms = new MyStruct();
^
2 errors

but I don�t get it I included the class path and all and the class is there why it does not recognaze it?
Jesper de Jong
Java Cowboy
Bartender

Joined: Aug 16, 2005
Posts: 12928
    
    3

The clue is in this message that the compiler gives you:

Please remove or make sure it appears in the correct subdirectory of the classpath.

Instead of "-cp D:\Java\test\com\lb\mystruct", you should add the base directory that contains the package in the classpath: "-cp D:\Java\test" (remove the part: "com\lb\mystruct").


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
Meir Yan
Ranch Hand

Joined: Apr 27, 2006
Posts: 597
hello and thanks for the fast reply
ok i did it but still geting errors :
D:\Java\test>%JAVA_HOME%\bin\javac -cp D:\Java\test MyTest.java

MyTest.java:10: cannot access MyStruct
bad class file: D:\Java\test\MyStruct.java
file does not contain class MyStruct
Please remove or make sure it appears in the correct subdirectory of the classpath.
MyStruct ms = new MyStruct();
^
1 error

what im doing wrong now?
sven studde
Ranch Hand

Joined: Sep 26, 2006
Posts: 148
what im doing wrong now?

Did you erase your import statement? Post your new code.

but I don�t get it I included the class path and all

The classpath isn't the same as the full path to the file. The classpath is the path to the directory containing the package.
[ October 04, 2006: Message edited by: sven studde ]
Meir Yan
Ranch Hand

Joined: Apr 27, 2006
Posts: 597
well the code include the import
and i tried every thing here but still im geting the same error



and the javac is :
%JAVA_HOME%\bin\javac -cp D:\Java\test\com\lb\mystruct MyTest.java
or
%JAVA_HOME%\bin\javac -cp .;D:\Java\test\com\lb\mystruct MyTest.java

and still .. what is wrong here ? its driving me crazy .
tahnks
Bobby Roberts
Greenhorn

Joined: Sep 26, 2006
Posts: 3
I'll see what I can find out for you. packages and classpaths gave me absolute fits when I was first learning them; so I comletely understand your frustration. The error you are getting is one I remember vividly.
[ October 04, 2006: Message edited by: Bobby Roberts ]
Bobby Roberts
Greenhorn

Joined: Sep 26, 2006
Posts: 3
I tried it on my comp and it works as you originally typed it. Except I created the directories tree myself and placed the MyStruct.java file in that directory instead of the D:\Java\test\ directory as you have yours. And this is what is causing your problem.

I'm looking at your error message:

MyTest.java:10: cannot access MyStruct
bad class file: D:\Java\test\MyStruct.java
file does not contain class MyStruct
Please remove or make sure it appears in the correct subdirectory of the classpath.
MyStruct ms = new MyStruct();
^
1 error


The bolded line is your clue.

It appears that the compiler is getting confused on which "MyStruct" to use. The problem is that you have your MyStruct.java file in the same directory that you are trying to compile MyTest.java from. Eventhough you have the correct MyStruct.class in the package, the compiler is looking at MyStruct.java which is in the D:\Java\test\ directory since it happens to have the same name, as your class file you are trying to use "MyStruct". It cannot find what it is looking for in D:\Java\test\MyStruct.java, hence the error: bad class file: D:\Java\test\MyStruct.java

In other words, it is trying to use D:\Java\test\MyStruct.java to find the class information it is looking for. The thing you have to do is move the MyStruct.java file out of that directory and try compiling MyTest.java again. The compiler should then use the correct MyStruct.class file that is in your package.

I ran into this problem many times, and finally got to the point where I created the directories myself when making a package so I'd never run into this problem, because it can easily throw you off.


Once you get your program working try this for kicks.

Take the two files you created, MyStruct.java and MyTest.java and remove the package and import statements from them. Save them both in the same directory, (use D:\Java\NEWTEST\).

Compile ONLY the MyTest.java file. The compiler will automatically compile your MyStruct.java file for you. So when the compile is complete you will have TWO class files. This further explains what the compiler was trying to do in your original problem and why it was blowing up.
[ October 04, 2006: Message edited by: Bobby Roberts ]
Meir Yan
Ranch Hand

Joined: Apr 27, 2006
Posts: 597
Big thanks !!!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: class file contains wrong class error , i dont understand it so fandmental
 
Similar Threads
I Still Get the Same Compile Error
Why Won't This Simple Program Run?
compile multiple class files
Why Won't ThisCompile?
Interesting classpath question