在这里,我们将给大家分享关于Smack引发“NoClassDefFoundError:无法解析以下文件:Lorg/jxmpp/util/XmppStringUtils”的知识,同时也会涉及到如何更有效
在这里,我们将给大家分享关于Smack引发“ NoClassDefFoundError:无法解析以下文件:Lorg / jxmpp / util / XmppStringUtils”的知识,同时也会涉及到如何更有效地 java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils、Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB、android – java.lang.NoClassDefFoundError retrofit2.Utils、android – 错误“java.lang.NoClassDefFoundError:com.google.repacked.apache.commons.io.FileUtils”的内容。
本文目录一览:- Smack引发“ NoClassDefFoundError:无法解析以下文件:Lorg / jxmpp / util / XmppStringUtils”
- java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils
- Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB
- android – java.lang.NoClassDefFoundError retrofit2.Utils
- android – 错误“java.lang.NoClassDefFoundError:com.google.repacked.apache.commons.io.FileUtils”
Smack引发“ NoClassDefFoundError:无法解析以下文件:Lorg / jxmpp / util / XmppStringUtils”
我的应用程序出现问题,我想创建一个连接到服务器的简单XMPP客户端。启动应用程序时遇到以下问题(编译过程没有问题),但是我的应用程序立即关闭。
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jxmpp/util/XmppStringUtils; at org.jivesoftware.smack.provider.ProviderManager.getKey(ProviderManager.java:314) at org.jivesoftware.smack.provider.ProviderManager.addStreamFeatureProvider(ProviderManager.java:304) at org.jivesoftware.smack.provider.ProviderManager.addLoader(ProviderManager.java:140) at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:54) at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:232) at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193) at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163) at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148) at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116) at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96) at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38) at org.reisacher.zapp.Main.login(Main.java:30) at org.reisacher.zapp.Main.onCreate(Main.java:73) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.ClassNotFoundException: Didn''t find class "org.jxmpp.util.XmppStringUtils" on path: DexPathList[[zip file "/data/app/org.reisacher.zapp-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469at org.jivesoftware.smack.provider.ProviderManager.getKey(ProviderManager.java:314)at org.jivesoftware.smack.provider.ProviderManager.addStreamFeatureProvider(ProviderManager.java:304) at org.jivesoftware.smack.provider.ProviderManager.addLoader(ProviderManager.java:140) at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:54) at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:232) at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193) at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163) at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148) at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116) at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96) at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38) at org.reisacher.zapp.Main.login(Main.java:30) at org.reisacher.zapp.Main.onCreate(Main.java:73) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)Suppressed: java.lang.ClassNotFoundException: org.jxmpp.util.XmppStringUtils at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 27 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
但是我不知何故找不到与丢失的“ XmppStringUtils”相关的任何东西
这是第30行中的代码
public void login() throws XMPPException, IOException, SmackException { XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setServiceName("reisacher.de") .setHost("192.168.178.6") .setPort(5222) .build(); AbstractXMPPConnection connection = new XMPPTCPConnection(config); connection.connect(); connection.login(username, password);}
这些是我的进口
import org.jivesoftware.smack.AbstractXMPPConnection;import org.jivesoftware.smack.SmackException;import org.jivesoftware.smack.XMPPException;import org.jivesoftware.smack.tcp.XMPPTCPConnection;import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
加上我的build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.apply plugin: ''jetty''buildscript { repositories { maven { url ''https://oss.sonatype.org/content/repositories/snapshots'' } mavenCentral() } dependencies { classpath ''com.android.tools.build:gradle:1.2.3'' }}dependencies { compile "org.igniterealtime.smack:smack-android:4.1.1" compile "org.igniterealtime.smack:smack-tcp:4.1.1" // optional features compile "org.igniterealtime.smack:smack-android-extensions:4.1.1" compile "org.igniterealtime.smack:smack-core:4.1.1"}allprojects { repositories { jcenter() }}
谢谢
答案1
小编典典从NoClassDefFoundError的javadoc:
如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为常规方法调用的一部分或使用新表达式创建新实例的一部分)而抛出,则找不到该类的定义。
Java使用动态链接,这意味着在首次使用符号(类名,…)时就进行了链接。正如Mohit已经指出的那样,您似乎缺少了JXMPP库,它是Smack的(传递)依赖项。我假设您确实只是通过将Smack放入libs/
文件夹中而将其添加到项目中。不建议使用这种方法,因为您很容易错过Smack的传统依赖,就像您遇到的那样。而是使用能够解决诸如Maven或Gradle之类的依赖关系的构建系统。也可以看看:
- Smack 4.1自述文件和升级指南
java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils
WARN streaming.StreamingContext: spark.master should be set as local[n], n > 1 in local mode if you have receivers to get data, otherwise Spark jobs will not get resources to process the received data.
java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils
at org.apache.spark.examples.streaming.JavaKafkaWordCount.main(JavaKafkaWordCount.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.streaming.kafka.KafkaUtils
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 10 more
17/06/29 18:33:37 INFO spark.SparkContext: Invoking stop() from shutdown hook
17/06/29 18:33:37 INFO server.ServerConnector: Stopped ServerConnector@2a76b80a{HTTP/1.1}{0.0.0.0:4040}
17/06/29 18:33:37 INFO handler.ContextHandler: Stopped o.s.j.s.ServletContextHandler@1601e47{/stages/stage/kill,null,UN
Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB
这是我的错误日志与Android Studio 1.0.2实现
02-03 13:05:23.831 8385-8385/com.******.*******E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB at android.support.v4.app.NavUtils$NavUtilsImplJB.getParentActivityName(NavUtils .java:125) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:302) at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:281) at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:142) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123) at com..******.*******.****.ActivityWelcome.onCreate(ActivityWelcome.java:33) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5041) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method)
组态
buildToolsVersion "21.1.2"android SDK TOOLS"24.0.2"multidex enabledpredexLibraries =falseincremental = truejumboMode = false dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.google.android.gms:play-services:6.5.87'' compile ''com.google.code.gson:gson:2.3'' compile ''com.android.support:support-v4:21.0.3@aar'' compile ''com.android.support:appcompat-v7:21.0.3@aar'' compile project('':ViewPagerIndicator'') compile(''de.keyboardsurfer.android.widget:crouton:1.8.4@aar'') { exclude group: ''com.google.android'', module: ''support-v4'' } compile ''org.java-websocket:Java-WebSocket:1.3.0''}
如何解决这个错误?gradlew清洁无济于事。构建文件夹删除也不起作用。Android Studio编译时未显示任何错误。
答案1
小编典典我遇到了这个问题,只是找到了解决方法-
答案是RTFM!以下是说明:https
:
//developer.android.com/tools/building/multidex.html
Multidexing是一项新功能,因此需要支持库才能与棒棒糖之前的设备兼容。您需要将以下内容添加到gradle文件依赖项中:
compile ''com.android.support:multidex:1.0.0''
同时在gradle文件中启用multidex输出:
android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true }}
然后将multidex支持应用程序添加到清单中:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application></manifest>
注意:
如果您的应用程序已经扩展了Application类,则可以重写attachBaseContext()方法并调用MultiDex.install(this)以启用multidex。有关更多信息,请参见MultiDexApplication
参考文档。
@Overrideprotected void attachBaseContext(Context context) { super.attachBaseContext(context); MultiDex.install(this);}
同样,请参阅上面的说明以获取更多信息…
希望这可以帮助
android – java.lang.NoClassDefFoundError retrofit2.Utils
我正在使用Retrofit来处理来自Mobile的Serverside数据.实施改造后,我得到以下例外.
我究竟做错了什么?
com.name.App_idea W/System.err: java.lang.NoClassDefFoundError:
retrofit2.Utils
at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:434)
at com.name.App_idea.utils.Idea.onCreate(Idea.java:103)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4541)
at android.app.ActivityThread.access$1500(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
改造初始
mRetrofit = new Retrofit.Builder()
.baseUrl(AppConstance.APP_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(getokHttpClient())
.build();
Gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsversion '23.0.3'
defaultConfig {
applicationId "com.name.App_idea"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "9"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile filetree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-scalars:2.0.0'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:cardview-v7:23.3.0'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'
compile 'com.android.support:support-v4:23.3.0'
}
应用类
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;
import android.os.Environment;
import android.support.multidex.MultiDex;
import android.util.Log;
import java.io.File;
import java.security.cert.CertificateException;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.x509trustmanager;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.scalars.ScalarsConverterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class Idea extends Application {
public static Retrofit mRetrofit;
public static IdeaService Iservice;
public static LoginResponceModel loinResponce;
public static SettingsModel settingModel;
public static LocationModel location = new LocationModel();
private static sqliteDatabase dbase;
private static String FILE_PATH;
public static sqliteDatabase getDataBase() {
return dbase;
}
public static String getFilePath() {
return FILE_PATH;
}
private static class DatabaseHelper extends sqliteOpenHelper {
DatabaseHelper(Context context) {
super(context, "App", null, 1);
}
@Override
public void onCreate(sqliteDatabase db) {
db.execsql(AppConstance.DbConstans.tblLogin);
Log.i("DB", "Created");
}
@Override
public void onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {
onCreate(db);
}
}
public static void deleteallTables() {
getDataBase().execsql("DELETE FROM login");
}
@Override
public void onCreate() {
super.onCreate();
try {
mRetrofit = new Retrofit.Builder()
.baseUrl(AppConstance.APP_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(getokHttpClient())
.build();
Iservice = mRetrofit.create(IdeaService.class);
MultiDex.install(this);
DatabaseHelper dbHelper = new DatabaseHelper(this);
dbase = dbHelper.getWritableDatabase();
AppDataService appDataService = new AppDataService();
loinResponce = appDataService.getLoginDetails();
settingModel = appDataService.getSettings();
FILE_PATH = getAppFilePath();
startService(new Intent(Idea.this, LocationTracker.class));
} catch (Exception e) {
e.printstacktrace();
}
}
public String combineFilePath(String path1, String path2) {
File file1 = new File(path1);
File file2 = new File(file1, path2);
return file2.getPath();
}
public String getAppFilePath() {
String dsPath;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))
dsPath = combineFilePath(Environment
.getExternalStorageDirectory().getAbsolutePath(),
"android/data/Idea/");
else
dsPath = this.getDir(
this.getPackageName(), 0).getAbsolutePath();
new File(dsPath).mkdirs();
return dsPath;
}
private OkHttpClient getokHttpClient() {
try {
// Create a trust manager that does not validate certificate chains
final TrustManager[] trustAllCerts = new TrustManager[]{
new x509trustmanager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedissuers() {
return new java.security.cert.X509Certificate[]{};
}
}
};
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(sslSocketFactory);
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
OkHttpClient okHttpClient = builder.build();
return okHttpClient;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
解决方法:
这是Gradle bulid配置问题我也有同样的问题
在Gradle你的使用
compile 'com.google.android.gms:play-services:8.4.0'
Enire Google Playservice Lib可以更改您的项目中使用的lib
例
com.google.android.gms:play-services-gcm:8.4.0
com.google.android.gms:play-services-maps:8.4.0
com.google.android.gms:play-services-auth:8.4.0
请参阅此URl https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project
android – 错误“java.lang.NoClassDefFoundError:com.google.repacked.apache.commons.io.FileUtils”
Android应用在build.gradle中包含以下内容:
dependencies {
...
compile 'commons-io:commons-io:2.4'
}
构建和安装应用程序没有问题.但是以下代码:
FileUtils.writeStringToFile(fText, "Test");
导致以下异常:
java.lang.NoClassDefFoundError: com.google.repacked.apache.commons.io.FileUtils
任何人都可以提供一个如何解决这个问题的提示吗?
[编辑:]
我刚刚意识到应用程序仍然可以在build.gradle中没有以下内容的情况下构建:
dependencies {
...
compile 'commons-io:commons-io:2.4'
}
FileUtils如下:
任何人都可以告诉com.google.repacked是什么以及如何摆脱它?
解决方法:
快速猜测,但似乎你没有使用公共库中的FileUtils.仔细检查import语句以查看从哪里导入FileUtils.
确保您要导入org.apache … FileUtils类,而不是com.google …包中的内容.
我们今天的关于Smack引发“ NoClassDefFoundError:无法解析以下文件:Lorg / jxmpp / util / XmppStringUtils”的分享已经告一段落,感谢您的关注,如果您想了解更多关于 java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils、Android Studio java.lang.NoClassDefFoundError:android.support.v4.app.NavUtilsJB、android – java.lang.NoClassDefFoundError retrofit2.Utils、android – 错误“java.lang.NoClassDefFoundError:com.google.repacked.apache.commons.io.FileUtils”的相关信息,请在本站查询。
本文标签: