标签: classnotfoundexception

在Eclipse中运行JUnit单元测试时使用ClassNotFoundException(使用Maven)

我刚刚将SpringSource Tools Suite(STS,Eclipse的变体IDE)升级到最新版本(v3.6.1).然后我的所有JUnit单元测试都无法再次运行.我收到此错误:

Class not found ClassToTest
java.lang.ClassNotFoundException: ClassToTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
Run Code Online (Sandbox Code Playgroud)

根据这篇博客: 在Eclipse中运行JUnit单元测试时使用ClassNotFoundException(使用Maven),这是因为Eclipse中的一些Maven插件配置错误.但是,在STS 3.6.2中,我在Maven插件中找不到此选项"Include Modules".如何解决此问题并重新启用单元测试?

eclipse unit-testing maven-plugin maven classnotfoundexception

17
推荐指数
2
解决办法
3万
查看次数

java.lang.ClassNotFoundException:com.sun.faces.config.ConfigureListener

我们是三个人开发JSF项目,我们之前没有进入过JSF.奇怪的是,从SVN检出相同的数据后,其中一个团队成员每次使用Tomcat 7.0.27都会收到404错误.

在Tomcat(在Eclipse中使用)启动时,会写出以下日志:

01.06.2012 11:45:16 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ......
01.06.2012 11:45:16 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SnapManCloud' did not find a matching property.
01.06.2012 11:45:16 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
01.06.2012 11:45:16 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
01.06.2012 11:45:16 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 677 ms
01.06.2012 11:45:16 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina …
Run Code Online (Sandbox Code Playgroud)

jsf tomcat classnotfoundexception

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

什么可能在长时间运行的进程中导致突然的ClassNotFoundException?

我们有一个非常小的Web服务(少于1K行代码)由Jetty运行.即使在压力测试阶段,该服务也始终如一.但是,经过13天的正常运行时间后,我们在同一天的两个节点中遇到了ClassNotFoundException.

奇怪的是,找不到的类已经存在(它是启动例程的一部分,并且它不断用于以前的请求).事实上,只需重新启动流程即可解决问题.两个节点都在不同的机器中,并且彼此独立.它们不依赖于外部资源,除了一个JMS连接.

在谷歌搜索时我找不到相关信息,因为大多数报告的问题与启动Java进程时类路径中缺少的类有关,这不是我们的情况.我们怀疑可能存在内存泄漏,从某种程度上破坏了JVM内存,但是这无法解释为什么同一时间在两个节点中发生同样的问题.在过去的五天里,我们一直在进行密集的压力测试,连接JVM监视器和内存泄漏分析器,一切看起来都很好.对于此测试,我们将进程内存从2GB减少到512MB.

细节:

  • 使用Java HotSpot(TM)64位服务器VM(内置16.3-b01,混合模式)
  • 使用jetty-runner-8.1.0.RC5.jar
  • 原始cmd行:java -Xmx2048M -jar jetty-runner-8.1.0.RC5.jar --port 5000 webapp.war
  • Intel Xeon E5-2680 8核(x2)+ 16GB RAM
  • 红帽企业Linux 6
  • 正在使用的一些框架:JBoss Resteasy,Spring IoC,Guava.

您能否就JVM突然"忘记"以前加载的类的存在而无法再次加载它的想法做出贡献?

Caused by: java.lang.ClassNotFoundException: com.a.b.c.SomeClass
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) ~[na:1.6.0_37]
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.6.0_37]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) ~[na:1.6.0_37]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) ~[na:1.6.0_37]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) ~[na:1.6.0_37]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ~[na:1.6.0_37]
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) ~[na:na]
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) ~[na:na]
    at java.lang.Class.forName0(Native Method) ~[na:1.6.0_37]
    at java.lang.Class.forName(Class.java:247) ~[na:1.6.0_37]
    at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:95) ~[na:1.6.0_37]
    at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107) ~[na:1.6.0_37]
    at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31) ~[na:1.6.0_37]
    at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:370) ~[na:1.6.0_37]
    at sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:351) ~[na:1.6.0_37]
    at …
Run Code Online (Sandbox Code Playgroud)

java jvm noclassdeffounderror classnotfoundexception

16
推荐指数
1
解决办法
2620
查看次数

运行JAR时ClassNotFoundException,在IntelliJ IDEA中运行时没有错误

我刚刚开始构建Java应用程序(我确实有.NET经验),我正在尝试构建一个小型测试应用程序,其整个代码是这样的:

package com.company;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {

    public static void main(String[] args) throws SQLException {
        System.out.println("Buna lume!");

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setIntegratedSecurity(true);
        ds.setServerName("localhost");
        ds.setPortNumber(1433);
        ds.setDatabaseName("Test");
        Connection con = ds.getConnection();

        String SQL = "SELECT * FROM Test WHERE ID = ?";
        PreparedStatement stmt = con.prepareStatement(SQL);
        stmt.setInt(1, 2);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            System.out.println(rs.getInt(1) + ", " + rs.getString(2));
        }
        rs.close();
        stmt.close();

        con.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在IDE(IntelliJ IDEA 12.1.6社区版)中运行该应用程序,使SQL Server可用,该应用程序运行正常,它应该做到这一点. …

java jar intellij-idea sqljdbc classnotfoundexception

16
推荐指数
2
解决办法
3万
查看次数

Android:app在Lollipop上运行时加载库,但不是IceCreamSandwich

我目前正在使用Android Studio开发Android应用.目前,该应用程序在Lollipop设备上完美启动,但由于ClassNotFoundException在棒棒糖前设备(我已在ICS上测试并且失败),在发布时崩溃.

缺少的类总是在运行时来自外部库.

这是gradle文件:

    buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.0'
    defaultConfig {
        applicationId 'com.kappsports.kapp10'
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 1
        versionName '1.0.0'
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            shrinkResources true
        }
    }
    lintOptions {
        abortOnError false
    }
    dexOptions {
        incremental true
        javaMaxHeapSize '4g'
    }
}

repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } …
Run Code Online (Sandbox Code Playgroud)

android classnotfoundexception android-4.3-jelly-bean android-gradle-plugin android-5.0-lollipop

16
推荐指数
2
解决办法
5450
查看次数

如何设置rmiregistry使用的类路径?

我正在尝试制作Java RMI客户端/服务器应用程序.我在启动应用程序的服务器端时遇到问题,因为当我尝试启动应用程序的服务器端时,它在调用Registry.bind()方法期间一直运行到ClassNotFoundException.

我从这里开始使用简单的教程:http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html.按照这些说明操作后,它最初抛出一个ClassNotFoundException,抱怨它无法找到"example.hello.Hello".我能够通过从教程中的destDir目录启动rmiregistry来解决这个问题,因为rmiregistry显然使用其初始起始目录作为其类路径的一部分.

之后我开始使用我的其他测试应用程序,直到我开始在服务器类中使用第三方jar文件时我才感觉良好.现在,如果我的服务器类引用任何jar文件中的任何内容,则Registry.bind()会抛出ClassNotFoundException,因为rmiregistry应用程序不知道这些jar文件.

据我所知,rmiregistry不接受任何类型的路径启动arg,所以我想知道如何告诉它我想要它承认什么类路径.根据这里的教程:http://docs.oracle.com/javase/tutorial/rmi/running.html,"你必须确保你将运行rmiregistry的shell或窗口没有设置CLASSPATH环境变量或有一个CLASSPATH环境变量,它不包含你想要下载到远程对象客户端的任何类的路径." 这听起来与我需要的相反......或者我读错了吗?有没有人有任何成功启动使用第三方jar的RMI客户端/服务器(在我的情况下,commons-io,commons-logging和rmiio)?

这是在Windows上,顺便说一下.


更新 我找到了解决方法.请参阅下面的答案.

java rmi rmiregistry classnotfoundexception

15
推荐指数
2
解决办法
2万
查看次数

java.lang.ClassNotFoundException:org.postgresql.Driver,Android

我在Windows上运行Eclipse.

按照本教程我下载了JDBC4,使用Project> Properties> add External JAR将其添加到我的构建路径,浏览文件,它工作正常(.classpath文件显示正确的lib路径).

该包出现在我的Referenced Libraries文件夹中,因此我继续本教程.

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    ....

    public void open ()
        {
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    try {
        conn = DriverManager.getConnection(url, username, password);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这将是那么简单,但我开始使用这个很长的堆栈跟踪

    java.lang.ClassNotFoundException: org.postgresql.Driver
Run Code Online (Sandbox Code Playgroud)

(如果需要,我可以提供更多)

我尝试过,include org.postgresql.*;但也没有帮助.我也尝试过JDBC3,但也没有运气.

用Android查看了Driver JDBC PostgreSQL,它提供了一个模糊的答案,说我最好只使用HTTP + JSON.这是我从未使用过的.

我是Android,postgresql,web开发的新手,所以一个简单的答案将不胜感激.

java postgresql android classnotfoundexception

15
推荐指数
3
解决办法
6万
查看次数

当我尝试运行此代码时,为什么会出现java.lang.NoClassDefFoundError?

我想映射字符串中的字符,但我遇到了运行时错误.

例:

object Hello {
    def hello(c: Char) {
        print(c)
    }

    def main(args: Array[String]) {
        "Hello World!".map(hello)
    }
}
Run Code Online (Sandbox Code Playgroud)

跟踪:

scalac Hello.scala
java Hello
Exception in thread "main" java.lang.NoClassDefFoundError: scala/LowPriorityImplicits
    at Hello.main(Hello.scala)
Caused by: java.lang.ClassNotFoundException: scala.LowPriorityImplicits
    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)
    ... 1 more
make: *** [test] Error 1
Run Code Online (Sandbox Code Playgroud)

scala classnotfoundexception

15
推荐指数
2
解决办法
2万
查看次数

java.lang.ClassNotFoundException:dalvik.system.BaseDexClassLoader.findClass

我在Google Play开发者控制台中不断收到此错误报告.它看起来像MultiDex错误.

java.lang.RuntimeException: 
  at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4514)
  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:5299)
  at java.lang.reflect.Method.invokeNative(Native Method:0)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
  at dalvik.system.NativeStart.main(Native Method:0)

Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
  at android.app.Instrumentation.newApplication(Instrumentation.java:975)
  at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
Run Code Online (Sandbox Code Playgroud)

我已经将它添加到gradle.build:

defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...

// Enabling multidex support.
multiDexEnabled true
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

 @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
        try {
            MultiDex.install(this);
        }catch (RuntimeException e){
            e.printStackTrace();
        }catch (Exception e){ …
Run Code Online (Sandbox Code Playgroud)

java android classnotfoundexception android-multidex

15
推荐指数
1
解决办法
2845
查看次数

在Eclipse中调试 - ClassNotFoundException

当我在Eclipse中调试一个简单的控制台应用程序时,我在调试窗口中获得了很多ClassNotFoundException行.这不是一个错误,在另一个窗格中稍微低一些,我得到"Source not found.".我明白这是因为所需类的源代码不可用,我想跳过这些行...我必须按很多次"跳过"或"跳出"按钮才能退出这些州.

为了避免这些无用的线路我该怎么办?

谢谢

eclipse debugging classnotfoundexception

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