当我尝试运行以下代码示例时,它给了我java.lang.NoClassDefFoundError异常。我看了相关的问题。所以他们没有解决我的问题。 有人可以帮忙吗?
public class UnitsSearchExample implements Runnable {
private Session session;
// Login to server
private void login(){
// initialize Wialon session
session.initSession("http://hst-api.wialon.com");
// trying login
session.login("wialon_test", "test", new ResponseHandler() {
@Override
public void onSuccess(String response) {
super.onSuccess(response);
// login succeed
System.out.println(String.format("Logged successfully. User name is %s", session.getCurrUser().getName()));
//call search units
searchUnits();
}
@Override
public void onFailure(int errorCode, Throwable throwableError) {
super.onFailure(errorCode, throwableError);
// login failed, print error
System.out.println(Errors.getErrorText(errorCode));
}
});
}
private void searchUnits(){
//Create new search specification
SearchSpec searchSpec=new SearchSpec();
//Set items type to search avl_units
searchSpec.setItemsType(Item.ItemType.avl_unit);
//Set property name to search
searchSpec.setPropName("sys_name");
//Set property value mask to search all units
searchSpec.setPropValueMask("*");
//Set sort type by units name
searchSpec.setSortType("sys_name");
//Send search by created search specification with items base data flag and from 0 to maximum number
session.searchItems(searchSpec, 1, Item.dataFlag.base.getValue(), 0, Integer.MAX_VALUE, new SearchResponseHandler() {
@Override
public void onSuccessSearch(Item... items) {
super.onSuccessSearch(items);
// Search succeed
System.out.println("Search items is successful");
printUnitsNames(items);
logout();
}
@Override
public void onFailure(int errorCode, Throwable throwableError) {
super.onFailure(errorCode, throwableError);
// search item failed, print error
System.out.println(Errors.getErrorText(errorCode));
logout();
}
});
}
private void printUnitsNames(Item... items){
if (items!=null && items.length>0) {
System.out.println(String.format("%d units found\r\nPrinting their names...", items.length));
//Print items names
for (Item item : items)
System.out.println(String.format("\t%s", item.getName()));
}
}
// Logout
private void logout(){
session.logout(new ResponseHandler() {
@Override
public void onSuccess(String response) {
super.onSuccess(response);
// logout succeed
System.out.println("Logout successfully");
System.exit(0);
}
@Override
public void onFailure(int errorCode, Throwable throwableError) {
super.onFailure(errorCode, throwableError);
// logout failed, print error
System.out.println(Errors.getErrorText(errorCode));
System.exit(0);
}
});
}
@Override
public void run() {
// get instance of current Session
session=Session.getInstance();
login();
}
public static void main(String[] args){
new Thread(new UnitsSearchExample()).start();
}
}
堆栈跟踪
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: com/google/gson/JsonElement at wialonTest.UnitsSearchExample.run(UnitsSearchExample.java:110) at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.ClassNotFoundException: com.google.gson.JsonElement at
java.net.URLClassLoader$1.run(URLClassLoader.java:366) at
java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method atjava.net.URLClassLoader.findClass(URLClassLoader.java:3 at
java.lang.ClassLoader.loadClass(ClassLoader.java atsun.misc.Launcher$AppClassLoader.loadCla –
答案 0 :(得分:2)
您必须在类路径中设置该包。
你可以在这里得到它:
https://code.google.com/p/google-gson/downloads/list
如果您正在使用eclise进行开发,那么要放入类路径,您必须将它放在构建路径中(项目 - 属性 - java构建路径 - 库 - 添加外部JAR - 选择jar)。
这应解决这个问题......
编辑:你有一个依赖缺失的问题。要解决这个问题,你应该使用像maven这样的一些依赖管理器,或者将每个丢失的jar添加到你的类路径中,为此找到互联网中的jar并重做将它们添加到eclipse中的项目中。要在互联网上找到它们,请尝试使用Google搜索:
“java maven< .....>”
例如,java maven org / apache / http / client / methods /将您发送到*:
http://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.1.1
你可以点击'下载jar'获取jar和它所依赖的所有Jars(在同一页面中,向下滚动,然后有)。下载它们,添加到puild路径及其完成...
努力工作?是的,这就是为什么优先使用像maven这样的经理。使用maven,您可以复制并粘贴<依赖性> ..< \&依赖性GT;在您的pom.xml文件中,它将为给定的依赖项下载所有必需的jar ...*你也可以在制造商的页面中找到包裹,他可以给你一个包含所有必需依赖的包裹。但可以肯定的是:你会有更多的例外情况,所以我会把你送到maven存储库,其中几乎就是你需要的所有罐子。