为什么以下代码会导致ClassNotFoundException?
public class App02 {
public static class A {
}
public static void main(String[] args) throws ClassNotFoundException {
try {
System.out.println("A.class.getCanonicalName() = " + A.class.getCanonicalName());
Class c = Class.forName("tests.App02.A"); //error on this line
System.out.println(c.getName());
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
A.class.getCanonicalName() = tests.App02.A
java.lang.ClassNotFoundException: tests.App02.A
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)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at tests.App02.main(App02.java:15)
Run Code Online (Sandbox Code Playgroud) 我是 Spring Boot 空间的新手。我正在按照教程学习创建 OAuth 身份验证服务器。
配置AuthorizationServerConfig.java讲师时,从包“org.springframework.security.oauth2.server.authrization.config”导入“ProviderSettings”类
但是,我没有从该特定包中获得该类。
我缺少任何依赖项吗?或者该课程现在不可用?
参考文献 1:错误点。无法解析符号 ProviderSettings
@Bean
public ProviderSettings providerSettings(){
return ProviderSettings.builder()
.issuer("http://auth-server:9000")
.build();
}
Run Code Online (Sandbox Code Playgroud)
参考2:pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>np.com.oskarshrestha</groupId>
<artifactId>Oauth-authorization-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Oauth-authorization-server</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> …Run Code Online (Sandbox Code Playgroud) authentication spring spring-security classnotfoundexception server
所以我使用的是Quartz jar:quartz-all-2.0.1.jar.从自述文件中可以看出,这个罐子应该可以设置所有东西.但是,当我尝试使用创建SchedulerFactory时
SchedulerFactory sf = new StdSchedulerFactory();
Run Code Online (Sandbox Code Playgroud)
我明白了:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.quartz.impl.StdSchedulerFactory.<init>(StdSchedulerFactory.java:268)
at WebScraper.Main.main(Main.java:19)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Run Code Online (Sandbox Code Playgroud)
我也很困惑,因为在我尝试运行程序之前Eclipse没有显示任何错误.谢谢你的帮助.
根据OSGi文档,OSGi旨在帮助防止ClassPath问题.
例如,从"OSGi in action":
启动应用程序时ClassNotFoundExceptions,因为类路径不正确.在允许代码执行之前,OSGi可以通过确保满足代码依赖性来提供帮助.
但是,因为我们已经将我们的java应用程序切换到OSGi,所以我看到了比以往更多的ClassNotFoundExceptions,尤其是NoClassDefFoundErrors.OSGI类加载器不再能够找到以前加载正常的类,更糟糕的是:在运行时遇到错误,这意味着除非通过手动测试应用程序的每个角落,否则无法轻松检查它.
例如,我们的应用程序在OSGi下运行愉快,但我们收到了beta测试人员的报告,他们无法再将文档导出为PDF.实际上,当我查看它时,我发现此功能导致异常被记录:
java.lang.NoClassDefFoundError: org/w3c/dom/Node
Run Code Online (Sandbox Code Playgroud)
那么,OSGi实际上是否创造了比它解决的更多的类路径问题?
更重要的是:在我在错误报告中阅读它们之前,如何测试我的类路径是否一致,所有必需的Import-Package语句等?
我的一个应用程序中的bug变得非常有趣.我的应用程序在Android L上工作正常,但是一旦我尝试在其他Android版本上运行它,我在尝试使用Retrofit调用Web服务时得到ClassNotFoundException或NoClassDefFoundError,即使所有这些类都存在且在我的工作正常android L设备.我不知道现在发生了什么,app正在其他版本中运行,只要我不进行网络请求,但是一旦我去网络请求,它就会给我ClassNotFoundException或NoClassDefFoundError.我也在使用Android Studio,所以如果有人早些时候遇到过这种问题,那么请帮忙,我非常需要.
注意:应用程序在Android L上工作正常,而且我得到ClassNotFoundException或NoClassDefFoundError的类不是特定于版本的,即它不像是在Android L左右支持它们.我得到这些错误的所有类都是一般的自定义/模型类,并且没有与更高版本的Android版本或其他东西的链接.
这些是我的Logcat错误
这是登录api时的例外
java.lang.TypeNotPresentException: Type com.codebrew.embazaar.pojo.UserLoginPojo not present
at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:63)
at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:72)
at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70)
at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55)
at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:71)
at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70)
at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55)
at libcore.reflect.Types.getTypeArray(Types.java:50)
at java.lang.reflect.Method.getGenericParameterTypes(Method.java:216)
at retrofit.RestMethodInfo.parseResponseType(RestMethodInfo.java:250)
at retrofit.RestMethodInfo.<init>(RestMethodInfo.java:97)
at retrofit.RestAdapter.getMethodInfo(RestAdapter.java:213)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:236)
at $Proxy0.userLogin(Native Method)
at com.codebrew.embazaar.MainActivity.loginUser(MainActivity.java:529)
at com.codebrew.embazaar.MainActivity.onClick(MainActivity.java:324)
at android.view.View.performClick(View.java:4748)
at android.view.View$PerformClick.run(View.java:19535)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5679)
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:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.codebrew.embazaar.pojo.UserLoginPojo
at java.lang.Class.classForName(Native Method) …Run Code Online (Sandbox Code Playgroud) android noclassdeffounderror classnotfoundexception retrofit android-5.0-lollipop
我收到此消息,我不知道如何解决它.在网上搜索并尝试实施他们的建议,但没有运气.

我基本上按照此链接中指定的说明进行操作 - http://docs.aws.amazon.com/toolkit-for-eclipse/v1/user-guide/lambda-tutorial.html
但是,我没有使用Eclipse中嵌入的AWS管理控制台上传项目,而是尝试创建项目的zip并将其上传到AWS Web控制台.
这就对了!!我试图在这里做什么都没有.它只是Lambda中的HelloWorld示例.
现在,这就是我创建zip文件的方式,这在Eclipse中非常简单 -

创建zip后,我将其上传到AWS Web控制台的代码选项卡下 -

现在,当我单击"测试"按钮时,它无法找到example.Hello类.
为什么Lambda函数难以找到这个类呢?任何人都可以建议这个执行中可能出错的地方吗?
还附上日志声明,以防它有帮助 -
deployment amazon-web-services classnotfoundexception aws-lambda
我正在尝试使用 Cassandra DB 创建一个 Spring 应用程序。但是当我尝试运行该应用程序时出现以下错误。
Caused by: java.lang.NoClassDefFoundError: com/datastax/oss/protocol/internal/SegmentCodec
... 103 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.datastax.oss.protocol.internal.SegmentCodec
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_152-release]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_152-release]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_152-release]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_152-release]
... 103 common frames omitted
Run Code Online (Sandbox Code Playgroud)
Spring Boot版本:2.3.4.RELEASE
Cassandra(spring-boot-starter-data-cassandra)版本:3.0.4
application.yml 文件:
spring:
data:
cassandra:
keyspaceName: my_keyspace
contactPoints: localhost
port: 9042
schema-action: CREATE_IF_NOT_EXISTS
local-datacenter: datacenter1
Run Code Online (Sandbox Code Playgroud)
CassandraConfig.java
@Configuration
@EnableCassandraRepositories(basePackages = "com.myproject.repository")
public class CassandraConfig extends AbstractCassandraConfiguration {
@Value("${spring.data.cassandra.keyspaceName}")
private String keyspace;
@Value("${spring.data.cassandra.contactPoints}")
private String contactPoints;
@Value("${spring.data.cassandra.port}")
private int port;
@Value("${spring.data.cassandra.local-datacenter}")
private String …Run Code Online (Sandbox Code Playgroud) cassandra classnotfoundexception spring-boot spring-data-cassandra cassandra-3.0
我正在尝试使用Java并希望使用Java的客户端/服务器进行测试,以使客户端将自定义类(Message)的简单对象发送到服务器.问题是我一直在服务器端获得ClassNotFoundException.
我认为其余的代码似乎没问题,因为像String这样的其他对象可以毫无问题地通过.
我在客户端和服务器的不同位置有两个不同的netbeans项目.
他们每个人都有自己的Message类副本.消息类实现Serializable.
在客户端,我尝试发送一个Message对象.
在服务器端,在调用readObject方法时,它似乎从客户端的包中找到Message类而不是它自己的包.printStackTrace显示:服务器端的"java.lang.ClassNotFoundException:client.Message"
我甚至没有尝试过投射或存储收到的对象.有什么东西我遗漏了吗?
以下代码在线上失败:
Class.forName("oracle.jdbc.driver.OracleDriver");
Run Code Online (Sandbox Code Playgroud)
有错误:
java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver
两个println印刷品:
Wed_Jun_22_11:18:51_PDT_2005
false
Run Code Online (Sandbox Code Playgroud)
这让我觉得这个类存在并且可以找到.此完全相同的类也适用于非servlet应用程序.
我已多次重启所有内容并多次重新生成应用程序/ servlet.所有值都经过硬编码,使其简单易行.
private static Connection getDBConnection() throws Exception {
System.out.println(oracle.jdbc.driver.OracleDriver.BUILD_DATE);
System.out.println(Class.class.desiredAssertionStatus());
//load the driver
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
}
Run Code Online (Sandbox Code Playgroud)
失败的完整servlet:
package servletClass_3;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class OneMoreBookStore
*/
@WebServlet("/OneMoreBookStore")
public class OneMoreBookStore extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
private static Connection getDBConnection() throws …Run Code Online (Sandbox Code Playgroud) 在JBOSS EAP 6(AS 7)中:
我正在调用Spring的WebServiceTemplate.marshalSendAndRecieve,这反过来又找不到在rt.jar中出现的类
Caused by: java.lang.ClassNotFoundException: com.sun.org.apache.xerces.internal.dom.DocumentImpl
Run Code Online (Sandbox Code Playgroud)
我不明白这是怎么发生的?当然,rt.jar中的所有内容都会在启动时加载?
有任何想法吗?
谢谢,
肯尼
java ×5
android ×1
aws-lambda ×1
cassandra ×1
classloader ×1
classpath ×1
client ×1
deployment ×1
eclipse ×1
jboss7.x ×1
osgi ×1
retrofit ×1
server ×1
servlets ×1
spring ×1
spring-boot ×1