本文将介绍java–应用程序在Eclipse的调试/运行中工作,但.APK在解析包含自定义视图的XML布局时给出.classNotFoundException的详细情况,。我们将通过案例分析、数据研究
本文将介绍java – 应用程序在Eclipse的调试/运行中工作,但.APK在解析包含自定义视图的XML布局时给出.classNotFoundException的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于android – 在Eclipse中转换为Maven项会导致ClassNotFoundException、Android应用程序上的Java运行时异常:java.lang.ClassNotFoundException、eclipse / tomcat:部署不再起作用(ClassNotFoundException)、eclipse 启动tomcat, java.lang.ClassNotFoundExcepti的知识。
本文目录一览:- java – 应用程序在Eclipse的调试/运行中工作,但.APK在解析包含自定义视图的XML布局时给出.classNotFoundException
- android – 在Eclipse中转换为Maven项会导致ClassNotFoundException
- Android应用程序上的Java运行时异常:java.lang.ClassNotFoundException
- eclipse / tomcat:部署不再起作用(ClassNotFoundException)
- eclipse 启动tomcat, java.lang.ClassNotFoundExcepti
java – 应用程序在Eclipse的调试/运行中工作,但.APK在解析包含自定义视图的XML布局时给出.classNotFoundException
当应用程序通过USB从Eclipse安装时,我的应用程序将在我的目标设备(HTC Desire HD)上进行调试和运行.
但是,当我导出到.APK然后在我的Desire HD上安装此.APK(首先手动卸载我之前安装的应用程序)时,它会崩溃.
检查过Logcat中的错误后,我可以看到,在布局XML文件中使用其完全限定名称引用的自定义扩展View of mine,显然无法找到并导致.classNotFoundException.
Logcat错误跟踪中的两条感兴趣的行是:
04-09 21:29:01.101:E / AndroidRuntime(2157):引起:android.view.InflateException:二进制XML文件行#12:错误输出类com.trevp.myAppName.DashboardLayout
以下是:
04-09 21:29:01.101:E / AndroidRuntime(2157):引起:java.lang.classNotFoundException:com.trevp.myAppName.DashboardLayout in loader dalvik.system.PathClassLoader [/data/app/com.trevp.myAppName -1.apk
只有从导出的.APK安装应用程序时,才会从Eclipse安装此应用程序时发生此崩溃.
如果这可能是Proguard问题,这是我的Proguard配置文件.我没有在默认情况下触及它,因为我是使用Proguard的新手.我的Proguard版本是4.7.
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.broadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
正在膨胀的XML文件. (使用合并标记,因为其中的元素作为子元素添加到父FrameLayout.)
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top|left"
android:scaleType="centerCrop"
android:id="@+id/dashLayoutimage"
android:src="@drawable/background2" android:drawingCacheQuality="high"/>
<com.trevp.myAppName.DashboardLayout
android:clipChildren="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/dashLayout"
android:layout_gravity="top|left" />
<include
android:layout_gravity="top|left"
layout="@layout/status_bar"
android:id="@+id/statusBar" />
<TextView
android:layout_gravity="bottom|left"
android:id="@+id/pollRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</TextView>
</merge>
提前感谢您对此提出的任何建议.如果需要任何其他摘录或配置信息,请大声说出来.
解决方法:
现在通过使用从新创建的测试项目中获取的完全标准和默认的proguard.cfg文件来修复此问题.
我之前使用的配置文件,正如我原来的问题所引用的那样,我必须在短时间内手动添加到项目中,因为它丢失了.我不确定文件从何处传来 – 我最有可能使用Google搜索并找到了一个示例默认文件并且只是使用它.
这是Eclipse为我提供的新项目,它启用了一个有效的.APK.
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.broadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
我可以看到差异在-keepclass *类型指令中.
我现在将更加努力地了解如何配置Proguard!
为了感兴趣,请看以下几行:
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
这些看起来像是保存View构造函数(或保留包含它们的类),只有在从XML引用类时才会调用它们.
android – 在Eclipse中转换为Maven项会导致ClassNotFoundException
新创建时,简单的Android应用程序运行正常.但是,当我将其转换为Maven项目时,每当我尝试运行应用程序时,我都会开始获取ClassNotFoundException.我已经尝试更新项目,重新启动Eclipse,检查构建路径中的所有库,清理和重建项目,重新启动模拟器,并将我的pom.xml减少到最低限度.
这个错误的原因是什么?对Maven来说是一些简单的错误配置吗?
我的LogCat:
07-09 23:07:18.027: D/AndroidRuntime(958): Shutting down VM 07-09 23:07:18.027: W/dalvikvm(958): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 07-09 23:07:18.137: E/AndroidRuntime(958): FATAL EXCEPTION: main 07-09 23:07:18.137: E/AndroidRuntime(958): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myproject/com.example.myproject.MainActivity}: java.lang.classNotFoundException: com.example.myproject.MainActivity 07-09 23:07:18.137: E/AndroidRuntime(958): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1880) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.app.ActivityThread.access$600(ActivityThread.java:123) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.os.Handler.dispatchMessage(Handler.java:99) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.os.Looper.loop(Looper.java:137) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.app.ActivityThread.main(ActivityThread.java:4424) 07-09 23:07:18.137: E/AndroidRuntime(958): at java.lang.reflect.Method.invokeNative(Native Method) 07-09 23:07:18.137: E/AndroidRuntime(958): at java.lang.reflect.Method.invoke(Method.java:511) 07-09 23:07:18.137: E/AndroidRuntime(958): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 07-09 23:07:18.137: E/AndroidRuntime(958): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 07-09 23:07:18.137: E/AndroidRuntime(958): at dalvik.system.NativeStart.main(Native Method) 07-09 23:07:18.137: E/AndroidRuntime(958): Caused by: java.lang.classNotFoundException: com.example.myactivity.MainActivity 07-09 23:07:18.137: E/AndroidRuntime(958): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 07-09 23:07:18.137: E/AndroidRuntime(958): at java.lang.classLoader.loadClass(ClassLoader.java:501) 07-09 23:07:18.137: E/AndroidRuntime(958): at java.lang.classLoader.loadClass(ClassLoader.java:461) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 07-09 23:07:18.137: E/AndroidRuntime(958): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1871) 07-09 23:07:18.137: E/AndroidRuntime(958): ... 11 more
我的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>myproject</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>4.1.1.4</version> <scope>provided</scope> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>
我的MainActivity.java:
package com.example.myproject; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main,menu); return true; } }
更新:我发现在pom.xml上尝试做Maven Clean和Maven生成源成功.但是,Maven安装给我一个错误:
[ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] MainActivity.java:[12,33] package R does not exist [ERROR] MainActivity.java:[18,44] package R does not exist
我还在最新的编辑中添加了一些内容(依赖和包装)以及修改过的(1.6-> 1.7,3.1-> 3.0)pom.xml文件.
解决方法
试试这个(在终端):
>制作一个文件夹,例如. myMvnProjects.
>转到此文件夹.
>类型:mvn archetype:generate
>选择de.akquinet.android.archetypes:android-quickstart(为Android应用程序创建骨架)(或其他 – 它取决于您的需求).
>提供必要参数(platform,groupId,artifactId,version等)
>点击回车(或在Mac上返回)就是这样–Maven为您生成一个简单的项目.
>键入:mvn clean install并等待它构建.
顺便说一句,我很好奇为什么你有< packaging> jar< / packaging>在你的主要android项目中.你应该有< packaging> apk< / packaging>.更重要的是,Maven对JDK 7没有任何问题.
Android应用程序上的Java运行时异常:java.lang.ClassNotFoundException
如何解决Android应用程序上的Java运行时异常:java.lang.ClassNotFoundException?
背景:我有一个Xamarin Forms应用程序以及相应的iOS和Android应用程序。该应用程序实质上是一个简单的浏览器包装程序,可在其中显示网页。
自从最近一次更新以来,我们主要在Android 6.0、7.0和7.1版本上遇到了大量崩溃。下面是错误的堆栈跟踪。我尝试使用Android模拟器重现该错误,但到目前为止仍未成功。对此造成潜在影响的任何线索都受到高度赞赏
PS::升级中的主要更改包括将目标android版本更改为Android 10(API级别29)。使用Android 9.0版进行编译
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
eclipse / tomcat:部署不再起作用(ClassNotFoundException)
我正在Linux Ubuntu Natty Narwhal中运行带有Tomcat 7.0.12的Eclipse Helios Service Release
1。
我一直很高兴地重新部署我的Web应用程序,直到它毫无理由地停止工作为止。显示以下异常:
SEVERE: Allocate exception for servlet Index
java.lang.ClassNotFoundException: obliquid.servlet.Index
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
- 在“ 服务器” 选项卡中,“本地主机上的Tomcat v7.0服务器[已启动,已同步]
- 我的项目显示为Tomcat v7.0 Server的子级
- 在“属性”,“ Java构建路径”,“源”中,单击“ Project / src 源”文件夹
- 在“属性”中,Web部署程序集具有以下映射: / WebContent- > / , / src- > / WEB-INF / classes , / test- > / build / classes
- 我的 src 目录在 obliquid / servlet / Index.java中 包含一个Servlet。 __
- 我已经尝试单击“ 清洁模块工作目录…” 并 发布
- 我试图从Eclipse Servers选项卡中停止和启动Server
我还应该检查什么?谢谢。
更新 尽管现在我正在处理新项目,但我还是回来检查旧项目,现在又神秘地开始工作了。我想我找不到发生的事情。
但是,今天有了新项目,我没有明显的原因遇到了404错误,我发现右键单击Tomcat服务器并选择“ Clean …”非常有用。也许可以帮上忙。
选择“清除…”表示:“清除将放弃所有发布状态并从头开始重新发布。确定要清除所有已发布资源吗?”。选择是,我解决了问题
更新2 在新项目上再次发生。404错误,这一次他们不会消失。
Stop -> Clean... -> Start (404)
Stop -> Clean Tomcat Work Directory... -> Start (404)
Stop -> Clean Tomcat Work Directory... -> Clean... -> Start (404)
Stop -> Remove on the application -> Clean... -> Run As -> Run on Server -> (404)
Exit Eclipse,Start Eclipse
Start the server -> (404)
UPDATE 3 事实证明,这次我只是没有注意到启动过程中由侦听器类引起的异常。解决问题后,它奏效了。猜猜我应该在凌晨3点停止工作。
eclipse 启动tomcat, java.lang.ClassNotFoundExcepti
其实,eclipse经常会犯这些小脾气,不知道如何解决的, 确实很恼人, 毕竟不是程序问题,有时候会花比较长的时间, 时间花在这上面确实很蛋疼
我总结,应该eclipse没有把部分class文件,部署到~/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps文件夹里(这是我的文件夹,当然不同机器是不一样的), 可以在
然后使用eclipse启动tomcat,自然会报classNotFound,
有如下解决办法:
**方法一.**eclipse菜单中的project,点击clean,注意,需要勾选build automatically
**方法二.**如果是maven项目,可以右击项目,maven,update project,选中force update of snapshots/releases
**方法三.**换一个tomcat试试
关于java – 应用程序在Eclipse的调试/运行中工作,但.APK在解析包含自定义视图的XML布局时给出.classNotFoundException的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android – 在Eclipse中转换为Maven项会导致ClassNotFoundException、Android应用程序上的Java运行时异常:java.lang.ClassNotFoundException、eclipse / tomcat:部署不再起作用(ClassNotFoundException)、eclipse 启动tomcat, java.lang.ClassNotFoundExcepti等相关知识的信息别忘了在本站进行查找喔。
本文标签: