java “Class file contains wrong class” error
-
28-10-2019 - |
Question
I'm trying to make a console application to test my webservice. I successfully deployed a webservice at http://localhost:8080/WS/myWS and i made proxy classes with wsimport:
wsimport -d bin -s src http://localhost:8080/WS/myWS?wsdl
Now my webservice classes are located in bin/mywebservice/ and i'm trying to compile my client class with classpath = ./
Here's the source code of my class:
import bin.mywebservice.myClass_Service;
public class TesterApp{
public static void main (String args[])
{
myClass_Service service = new myClass_Service();
}
}
And i have error:
TesterApp.java:1: error: cannot access myClass_Service
import bin.mywebservice_Service.myClass;
^
bad class file: .\bin\mywebservice\myClass_Service.class
class file contains wrong class: mywebservice.myClass_Service
Please remove or make sure it appears in the correct subdirectory of the classpath.
please help, what's wrong with myClass_Service? i swear, myClass_Service.class exists in .\bin\mywebservice\
Solution
You're incorrectly including the bin
in the import
declaration.
Rather put bin
on the classpath and correct the import
.
Unless (the poorly-named) myClass_Service.java
file is package bin.mywebservice
(which it isn't, according the the error message), you're trying to correct the problem in the wrong place.
OTHER TIPS
It looks like the generated class has a package mywebservice
, not bin.mywebservice
. Make sure the bin
directory is on the classpath, and drop bin
from the packages.
This makefile may help if you are using packages:
CLASS_PATH = ../bin
vpath %.class $(CLASS_PATH)
all : HelloJNI.h
HelloJNI.h : com/my/package/HelloJNI.class
javah -classpath $(CLASS_PATH) com.my.package.$*