问题
I have a project that I can run correctly from within Eclipse, but running the standalone jar gives me the java.lang.NoSuchMethodError for a class at runtime.
I unpacked the jar file and can see the class file in one library file in jar and I do see the method defined in the class. The exception is not about class not found, but just can't find the method in the class.
Could not find any helpful information on the internet for how to solve it.
回答1:
It is much likely that there is another jar in the dependencies that has the same class(may be another version for the same library) but don't have this method. I think that this latter class is the one loaded instead of the one you unpacked.
回答2:
NoSuchMethodError occurs when
... application tries to call a specified method of a class (either static or instance), and that class no longer has a definition of that method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of a class has incompatibly changed
As highlighted, there are two possibilities :
- Either method definition doesn't exists
- If method definition exist, then they might have incompatible change i.e. you might be using different version of jar/class during runtime.
来源:https://stackoverflow.com/questions/48233192/how-to-resolve-java-lang-nosuchmethoderror