Java NoClassDefFoundError使用Android项目的单例模式
我目前正在开发一个Android应用程序,它使用RESTfulWebServices与服务进行通信,这是一个Maven项目。我们使用单例模式来存储从Maven项目获得的响应。但是,一旦在SingletonClass中访问ResponseBean,我就会得到一个NoClassDefFoundError,即使我已经将Maven项目添加到Java构建路径中。我一整天都在试图解决这个问题,但我找不到解决办法 这是我收到的错误消息:Java NoClassDefFoundError使用Android项目的单例模式,java,android,maven,singleton,noclassdeffounderror,Java,Android,Maven,Singleton,Noclassdeffounderror,我目前正在开发一个Android应用程序,它使用RESTfulWebServices与服务进行通信,这是一个Maven项目。我们使用单例模式来存储从Maven项目获得的响应。但是,一旦在SingletonClass中访问ResponseBean,我就会得到一个NoClassDefFoundError,即使我已经将Maven项目添加到Java构建路径中。我一整天都在试图解决这个问题,但我找不到解决办法 这是我收到的错误消息: 04-28 21:17:27.889: E/AndroidRuntime
04-28 21:17:27.889: E/AndroidRuntime(1584): FATAL EXCEPTION: main
04-28 21:17:27.889: E/AndroidRuntime(1584): java.lang.NoClassDefFoundError: ch.uzh.ifi.seal.soprafs14.common.beans.user.UserResponseBean
04-28 21:17:27.889: E/AndroidRuntime(1584): at ch.uzh.ifi.seal.soprafs14.group_09_android.model.GameDataSingleton.<init>(GameDataSingleton.java:32)
04-28 21:17:27.889: E/AndroidRuntime(1584): at ch.uzh.ifi.seal.soprafs14.group_09_android.model.GameDataSingleton.getInstance(GameDataSingleton.java:45)
04-28 21:17:27.889: E/AndroidRuntime(1584): at ch.uzh.ifi.seal.soprafs14.group_09_android.gui.activities.MenuActivity.onCreate(MenuActivity.java:55)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.app.Activity.performCreate(Activity.java:5104)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.os.Handler.dispatchMessage(Handler.java:99)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.os.Looper.loop(Looper.java:137)
04-28 21:17:27.889: E/AndroidRuntime(1584): at android.app.ActivityThread.main(ActivityThread.java:5041)
04-28 21:17:27.889: E/AndroidRuntime(1584): at java.lang.reflect.Method.invokeNative(Native Method)
04-28 21:17:27.889: E/AndroidRuntime(1584): at java.lang.reflect.Method.invoke(Method.java:511)
04-28 21:17:27.889: E/AndroidRuntime(1584): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-28 21:17:27.889: E/AndroidRuntime(1584): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-28 21:17:27.889: E/AndroidRuntime(1584): at dalvik.system.NativeStart.main(Native Method)
04-28 21:17:31.293: I/Process(1584): Sending signal. PID: 1584 SIG: 9
提前谢谢 之所以出现此异常,是因为DVM无法在apk中找到UserResponseBean 尝试重新检查您对maven的依赖性我假设您正在使用maven,并确保它是正确的 如果您使用的是.jar库,请尝试将其移动到libs文件夹
让我知道会发生什么。尝试属性->Java构建路径->库->添加库->用户库!!!!!!我认为这是适合您的解决方案。我将Maven类作为.jar文件导入,但这仍然没有奏效。最后,我安装了最新的Android构建工具rev。19.0.3这对我来说很有帮助。。。
package ch.uzh.ifi.seal...;
import ch.uzh.ifi.seal.soprafs14.common.beans.lobby.LobbyResponseBean;
import ch.uzh.ifi.seal.soprafs14.common.beans.user.UserResponseBean;
/**
* This singleton class contains all game data on the client and allows to
* access this data from all activities in the application.
*
*/
public class GameDataSingleton {
private static GameDataSingleton instance = null;
private String username;
/**
* Contains user data like ID, username and token.
*/
private UserResponseBean user;
/**
* Contains lobby data like lobbyID and a list of all players.
*/
private LobbyResponseBean lobby;
/**
* Private Constructor -> Singleton pattern
*/
private GameDataSingleton() {
user = new UserResponseBean(); // I get the Error at this line
lobby = new LobbyResponseBean();
username = "";
}
/**
* Returns instance of GameDataSingleton or if it does not yet exist,
* creates a new instance.
*
* @return GameDataSingleton instance
*/
public static GameDataSingleton getInstance() {
if (instance == null) {
instance = new GameDataSingleton();
}
return instance;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public UserResponseBean getUser() {
return user;
}
public void setUser(UserResponseBean user) {
this.user = user;
}
public LobbyResponseBean getLobby() {
return lobby;
}
public void setLobby(LobbyResponseBean lobby) {
this.lobby = lobby;
}
}