标签: classnotfoundexception

"无法找到主类"

我正在尝试从命令promopt运行示例Java应用程序,但是我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/badlogic/gdx/helloworld/HelloWorldDesktop
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.helloworld.HelloWorldDesktop
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.badlogic.gdx.helloworld.HelloWorldDesktop.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

我用来尝试运行这个应用程序的命令是:

java -cp .;gdx.jar;gdx-backend-jogl.jar com.badlogic.gdx.helloworld.HelloWorldDesktop
Run Code Online (Sandbox Code Playgroud)

所有相关文件都在当前工作目录中(.java,.class和.jar文件)

我用来构建.class文件的命令如下(有2个.java文件):

javac -cp gdx.jar;gdx-backend-jogl.jar HelloWorld.java HelloWorldDesktop.java
Run Code Online (Sandbox Code Playgroud)

同样,这是从同一个工作目录运行的 - 内容HelloWorldDesktop.java是(或多或少):

package com.badlogic.gdx.helloworld;

public class HelloWorldDesktop {
    public static void main (String[] argv) {
        // Application
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试学习Java作为C#开发人员,所以我有很强的编程概念背景,整个java工具链目前让我很困惑.异常表明HelloWorldDesktop找不到类,但据我所知,我已经得到了正确的名称,并且我已经将正确的.jar文件添加到类路径中,因此Java应该能够加载这个类.

为什么找不到它HelloWorldDesktop

java classpath classnotfoundexception

5
推荐指数
1
解决办法
1万
查看次数

通过套接字发送匿名类?(Java中的Object..Stream)

所以现在,我有一个运行的服务器ObjectInputStreamObjectOutputStream.

我遇到的问题是我有一个自定义(匿名)类,它扩展java.lang.Date了我试图发送到客户端然后编译.

所以我没有在客户端定义类,但我想以编程方式编译类.我尝试了很多不同的方法,但每次我得到一个ClassNotFoundException因为该类最初不在客户端.

Class<?> dateClass = (Class<?>) in.readObject(); //This is where the CNF Exception occurs
Compiler.compileClass(dateClass);
Run Code Online (Sandbox Code Playgroud)

java class objectoutputstream objectinputstream classnotfoundexception

5
推荐指数
1
解决办法
1737
查看次数

使用<Set name ="extraClasspath">设置Jetty类路径时出现问题

我有一个外部jar,我不想与我的webapp捆绑在一起.我把它放在码头的类路径上.不幸的是,我正在部署的环境非常严格,我只能写入两个目录:包含上下文的目录和包含webapps的目录.

我选择将我的外部jar放在webapp目录中.为了让我的webapp可见,我正在配置WebAppContext以查看这个额外的jar.这是我的myAppContext.xml文件

<Configure id="myContext" class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/myApp</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/myApp.war</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<Set name="extraClasspath"><SystemProperty name="jetty.home" default="."/>/webapps/myExternalJAR.jar</Set>
<New class="com.mycompany.mypackage.MyExternalClass"></New>
Run Code Online (Sandbox Code Playgroud)

最后一行尝试实例化可以在我的外部jar中找到的MyExternalClass.当启动jetty时,我在配置文件的这一行得到一个ClassNotFoundException.

有什么我想念的吗?根据规范,这应该工作.对于如何处理这个问题,我会非常感激.

configuration jetty classpath classnotfoundexception

5
推荐指数
0
解决办法
1091
查看次数

签署apk后Activity的ClassNotFoundException

在测试应用程序的调试版本时-可以。在我签署Google Play版本后,它开始进入FC,但有以下例外:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.wiagames.guitartuner/com.wiagames.guitartuner.activities.MainActivity}: java.lang.ClassNotFoundException: com.wiagames.guitartuner.activities.MainActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
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:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.wiagames.guitartuner.activities.MainActivity
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
Run Code Online (Sandbox Code Playgroud)

表现:

 <application android:label="@string/app_name"
                 android:icon="@drawable/ic_launcher">

        <activity android:name=".activities.MainActivity"
                  android:label="@string/app_name"
                  android:configChanges="orientation|keyboardHidden"
                  android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity android:name="com.google.ads.AdActivity"
                  android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

    </application>
Run Code Online (Sandbox Code Playgroud)

如何解决?

android classnotfoundexception

5
推荐指数
1
解决办法
1250
查看次数

Applet隐藏的classnotfound异常

我正在开发一个行为奇怪的applet:这不是通常的"我无法在浏览器中启动我的applet"问题,而是更微妙的东西.

applet包含一个带有8个选项卡的jtabbedpane,每个选项卡在工作流中执行一些数据操作,用户有两个按钮(后退和前进)循环选项卡.

当我将它运行到浏览器(最新的chrome或firefox,但这没关系)时,我注意到从第7个选项卡传到第8个选项卡时一致的减速:在后者中,我在该选项卡中放置了一个带有自定义tablemodel的jtable,在日食中它运行得很好.稍后我会注意到jvm会为类RateTableModel抛出一个classnotfoundexception,这是我的自定义tablemodel.奇怪的是,即使我在IDE中测试applet,也作为自签名applet在浏览器中测试异常从未在任何控制台中抛出.我在任何地方都进行了验证:没有空的catch块,每个异常都会始终打开stackstrace,如果我将tablemodel的初始化代码放在try/catch块中,那么异常永远不会被捕获.

我想问的是有关为什么会发生这种情况的任何想法.

RateTableModel类位于geotel.utils包中,在我必须加载这个类之前,我有其他类我经常实例化,并且我验证了这个类存在于jar中.

有关开发的详细信息(可能对于那些阅读此内容的人可能很有用):

使用该命令对applet进行签名

jarsigner -keystore keystore3 C:\GestioneOneri.jar me3
Run Code Online (Sandbox Code Playgroud)

applet从以下html文件运行:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            <title>Titolo</title>
    </head>
    <body>
        <script src="http://www.java.com/js/deployJava.js"></script>
        <script> 
            var attributes = {code:'geotel.gui.Login.class', 
                    archive:'GestioneOneri.jar,mysql-connector-java-5.1.20-bin.jar,poi-3.9-20121203.jar,forms-1.3.0.jar', 
                    width:1024, height:700} ;
            var parameters = {jnlp_href:'gestioneoneri.jnlp', portalUrl:'http://192.168.146.145:8080/GestioneOneriServlet', nomeUtente:'', numeroPratica:'', percorsoFileCalcoloOneri:"/", nomeFileCalcoloOneri:"calcoloOneri.xls"} ; 
            var version = '1.6' ;
            deployJava.runApplet(attributes, parameters, version);  
        </script>
        <noscript>This page requires JavaScript.</noscript>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

JNLP文件如下:

<?xml version="1.0" encoding="UTF-8"?>
    <jnlp href="gestioneoneri.jnlp">
        <information>
            <title>Gestione Oneri Urbanistici</title>
            <vendor>Geotel soc. coop.</vendor>
            <offline-allowed />
        </information>
        <resources>
            <j2se version ="1.6+" initial-heap-size="128m" max-heap-size="1024m" …
Run Code Online (Sandbox Code Playgroud)

java applet classloader classnotfoundexception

5
推荐指数
1
解决办法
910
查看次数

android.view.WindowInsets ClassNotFoundException

android.view.WindowInsets 在API级别20中添加.

我导入android.view.WindowInsets我的CustomLayout覆盖onApplyWindowInsets(WindowInsets insets),但ClassNotFoundException发生在一些手机,其api级别从14到21.这是什么原因?

发生在:Rooted Nexus 5,Android 4.4.2

堆栈跟踪:

Fatal Exception: java.lang.NoClassDefFoundError: android/view/WindowInsets
   at java.lang.Class.getDeclaredMethods(Class.java)
   at java.lang.Class.getDeclaredMethods(Class.java:656)
   at android.view.ViewDebug.getExportedPropertyMethods(ViewDebug.java:960)
   at android.view.ViewDebug.exportMethods(ViewDebug.java:1047)
   at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:997)
   at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:983)
   at android.view.ViewDebug.dumpView(ViewDebug.java:900)
   at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:855)
   at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
   at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
   at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
   at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
   at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
   at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
   at android.view.ViewDebug.dump(ViewDebug.java:793)
   at android.view.ViewDebug.dispatchCommand(ViewDebug.java:416)
   at android.view.ViewRootImpl$W.executeCommand(ViewRootImpl.java:6258)
   at android.view.IWindow$Stub.onTransact(IWindow.java:65)
   at android.os.Binder.execTransact(Binder.java:404)
   at dalvik.system.NativeStart.run(NativeStart.java)
Caused by java.lang.ClassNotFoundException: Didn't find class "android.view.WindowInsets" on path: DexPathList[[zip file "/data/app/***-1.apk"],nativeLibraryDirectories=[/data/app-lib/***-1, /vendor/lib, /system/lib]]
   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
   at …
Run Code Online (Sandbox Code Playgroud)

android classnotfoundexception

5
推荐指数
2
解决办法
2105
查看次数

java.lang.ClassNotFoundException:org.hibernate.bytecode.instrumentation.internal.FieldInterceptionHelper

在我的Spring MVC应用程序验证实体(插入之前)期间,我收到以下错误:

    ...
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/bytecode/instrumentation/internal/FieldInterceptionHelper
    at org.hibernate.jpa.internal.util.PersistenceUtilHelper.isLoadedWithoutReference(PersistenceUtilHelper.java:119)
    at org.hibernate.jpa.HibernatePersistenceProvider$1.isLoadedWithoutReference(HibernatePersistenceProvider.java:171)
    at javax.persistence.Persistence$1.isLoaded(Persistence.java:111)
    at org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:46)
    at org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:128)
    at org.hibernate.validator.internal.engine.resolver.CachingTraversableResolverForSingleValidation.isReachable(CachingTraversableResolverForSingleValidation.java:36)
    at org.hibernate.validator.internal.engine.ValidatorImpl.isReachable(ValidatorImpl.java:1522)
    at org.hibernate.validator.internal.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:1507)
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:584)
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:555)
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:490)
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:454)
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:406)
    at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:204)
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:108)
    at org.springframework.validation.DataBinder.validate(DataBinder.java:866)
    at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.validateIfApplicable(ModelAttributeMethodProcessor.java:164)
    at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:111)
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:99)
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    ... 33 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.bytecode.instrumentation.internal.FieldInterceptionHelper from [Module "deployment.Employee_Ex.war:main" from …
Run Code Online (Sandbox Code Playgroud)

java hibernate maven classnotfoundexception wildfly

5
推荐指数
1
解决办法
8118
查看次数

java.lang.NoClassDefFoundError:scala/reflect/api/TypeCreator

当我通过右键单击"Debug"在IntelliJ中运行我的sbt项目时,我收到此错误消息.

/home/johnreed/Applications/jdk1.8.0_73/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:34395,suspend=y,server=n -Dfile.encoding=UTF-8 -classpath /home/johnreed/Applications/jdk1.8.0_73/jre/lib/charsets.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/deploy.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/cldrdata.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/dnsns.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/jaccess.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/jfxrt.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/localedata.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/nashorn.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/sunec.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/sunjce_provider.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/sunpkcs11.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/ext/zipfs.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/javaws.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/jce.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/jfr.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/jfxswt.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/jsse.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/management-agent.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/plugin.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/resources.jar:/home/johnreed/Applications/jdk1.8.0_73/jre/lib/rt.jar:/home/johnreed/sbtProjects/UnderstandingScala/target/scala-2.11/classes:/home/johnreed/.ivy2/cache/com.chuusai/shapeless_2.11/bundles/shapeless_2.11-2.3.1.jar:/home/johnreed/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.8.jar:/home/johnreed/.ivy2/cache/com.google.code.findbugs/jsr305/jars/jsr305-2.0.1.jar:/home/johnreed/.ivy2/cache/com.google.guava/guava/bundles/guava-16.0.1.jar:/home/johnreed/.ivy2/cache/com.twitter/jsr166e/jars/jsr166e-1.0.0.jar:/home/johnreed/.ivy2/cache/com.twitter/util-collection_2.11/jars/util-collection_2.11-6.34.0.jar:/home/johnreed/.ivy2/cache/com.twitter/util-core_2.11/jars/util-core_2.11-6.34.0.jar:/home/johnreed/.ivy2/cache/com.twitter/util-function_2.11/jars/util-function_2.11-6.34.0.jar:/home/johnreed/.ivy2/cache/commons-collections/commons-collections/jars/commons-collections-3.2.2.jar:/home/johnreed/.ivy2/cache/javax.inject/javax.inject/jars/javax.inject-1.jar:/home/johnreed/.ivy2/cache/org.scala-lang.modules/scala-parser-combinators_2.11/bundles/scala-parser-combinators_2.11-1.0.4.jar:/home/johnreed/.ivy2/cache/org.typelevel/macro-compat_2.11/jars/macro-compat_2.11-1.1.1.jar:/home/johnreed/.ivy2/cache/scala.trace/scala-trace-debug_2.11/jars/scala-trace-debug_2.11-2.2.14.jar:/home/johnreed/Applications/idea-IC-145.258.11/lib/idea_rt.jar pkg.Main
Connected to the target VM, address: '127.0.0.1:34395', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:34395', transport: 'socket'
Exception in thread "main" java.lang.NoClassDefFoundError: scala/reflect/api/TypeCreator
    at pkg.Main.main(Main.scala)
Caused by: java.lang.ClassNotFoundException: scala.reflect.api.TypeCreator
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

我从IntelliJ运行时只收到此错误.当我从SBT运行它时sbt run,它工作正常.sbt compile工作文件也是.我如何解决这个问题,以便我的项目作为应用程序运行?

IntelliJ NoClassDefFoundError

*解决方案*

手动添加scala-reflect-2.11.8.jar

jar文件

reflection scala intellij-idea classnotfoundexception intellij-scala

5
推荐指数
2
解决办法
7517
查看次数

无法实例化活动...未在路径上找到类WelcomeActivity:DexPathList(使用即时运行)

我已经在我的项目中苦苦挣扎了几天,突然从一个构建/部署到另一个我开始得到以下异常.没有更新或更改,我只是想在它发生时在不同的设备上运行应用程序(就像其他任何一天真的一样).

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.app.flavor.debug/com.my.app.ui.activity.WelcomeActivity}: java.lang.ClassNotFoundException: Didn't find class "com.my.app.flavor.ui.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/app/com.my.app.flavor.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/**com.my.app.flavor.**debug-2/lib/x86, /data/app/com.my.app.flavor.debug-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                  at android.app.ActivityThread.-wrap11(ActivityThread.java)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
               Caused by: java.lang.ClassNotFoundException: Didn't find class "com.my.app.ui.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/app/com.my.app.flavor.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/com.my.app.flavor.debug-2/lib/x86, /data/app/com.my.app.flavor.debug-2/base.apk!/lib/x86, /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:469)
                  at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:148) 
                  at android.app.ActivityThread.main(ActivityThread.java:5417) 
                  at java.lang.reflect.Method.invoke(Native …
Run Code Online (Sandbox Code Playgroud)

android classnotfoundexception dex android-studio android-instant-run

5
推荐指数
1
解决办法
2484
查看次数

Robolectric和AndroidX ClassNotFoundException android.support.v4.app.NotificationCompat $ Style

我正在尝试使用Robolectric,以便在不使用模拟器或设备的情况下对Android应用程序中的某些类进行单元测试。例如,我想对Dao类进行单元测试,但是我总是有以下异常:

造成原因:java.lang.ClassNotFoundException:android.support.v4.app.NotificationCompat $ Style

这是fullstackstrace:

java.lang.NoClassDefFoundError:com / pcg.ape.AudiencePlus.a(android.support/v4/app/NotificationCompat$Style)com.hager处com.pcg.ape.AudiencePlus.initialize(Unknown Source) org.robolectric.android.internal.AndroidEnvironment.lambda $ installAndCreateApplication $ 0(AndroidEnvironment.java:253)处的app.AppApplication.onCreate(AppApplication.kt:360)在org.robolectric.util.PerfStatsCollector.measure(PerfStatsCollector.java:75) )位于org.robolectric.android.internal.AndroidEnvironment.installAndCreateApplication(AndroidEnvironment.java:253)位于org.robolectric.android.internal.AndroidEnvironment.setUpApplicationState(AndroidEnvironment.java:149)位于org.robolectric.RobolectricTestRunner.beforeTest(Robolectric。 java:298),网址为org.robolectric.internal.SandboxTestRunner $ 2。在org.robolectric.internal.bytecode.Sandbox.lambda $ runOnMainThread $ 0(Sandbox.java:89)处的lambda $ evaluate $ 0(SandboxTestRunner.java:247)在java.util.concurrent.FutureTask.run(FutureTask.java:266)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)在java.lang.Thread.run(Thread.java:745) )由以下原因导致:java.lang.ClassNotFoundException:android.support.v4.app.NotificationCompat $ Style在org.robolectric.internal.bytecode.SandboxClassLoader.getByteCode(SandboxClassLoader.java:164)在org.robolectric.internal.bytecode.SandboxClassLoader org.org.robolectric.internal.bytecode.SandboxClassLoader.lambda $ findClass $ 0(SandboxClassLoader.java:112)处的.maybeInstrumentClass(SandboxClassLoader.java:119)在组织处。java.lang.ClassLoader.loadClass(ClassLoader.java:424)上的org.robolectric.internal.bytecode.SandboxClassLoader.findClass(SandboxClassLoader.java:111)上的robolectric.util.PerfStatsCollector.measure(PerfStatsCollector.java:53) .lang.ClassLoader.loadClass(ClassLoader.java:357)...还有16个

请注意,AudiencePlus库是一个用于接收推送通知的库(例如OneSignal)。

该项目使用androidX。这里有一些配置元素:

gradle.properties文件包含以下几行:

android.enableJetifier=true
android.useAndroidX=true

android.enableUnitTestBinaryResources=true
Run Code Online (Sandbox Code Playgroud)

build.gradleapp模块的文件包含以下几行:

android
{
  defaultConfig
  {
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    testOptions
    {
      unitTests
      {
        includeAndroidResources = true
      }
    }
  }
}

dependencies
{
  testImplementation "junit:junit:4.12"
  testImplementation "androidx.test:runner:1.1.1"
  testImplementation "androidx.test.ext:junit-ktx:1.1.0"
  testImplementation "org.robolectric:robolectric:4.2"
}
Run Code Online (Sandbox Code Playgroud)

这是我要测试的课程:

package com.hager.ecat.room.ecat.dao

import androidx.test.ext.junit.runners.AndroidJUnit4 …
Run Code Online (Sandbox Code Playgroud)

junit android classnotfoundexception robolectric

5
推荐指数
0
解决办法
243
查看次数