Java NoClassDefFoundError: org/aspectj/lang/Sign
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24033649/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
NoClassDefFoundError: org/aspectj/lang/Sign
提问by user3706280
I have been trying a simple program to connect MYSQL to my Java app. I am using Windows OS. I used an online tutorial and tried the following program in notepad:
我一直在尝试一个简单的程序来将 MYSQL 连接到我的 Java 应用程序。我正在使用 Windows 操作系统。我使用了在线教程并在记事本中尝试了以下程序:
import java.sql.*;
public class Database1{
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/EMP";
static final String USER = "root";
static final String PASS = "admin";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("Creating statement...");
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Employees");
System.out.println("ID NAME ");
while(rs.next()){
String id=rs.getString("ID");
String name=rs.getString("NAME");
System.out.print(id);
System.out.println(name);
}
rs.close();
stmt.close();
conn.close();
} //close try block
catch(SQLException s){ s.printStackTrace();}
catch(Exception e){e.printStackTrace();}
finally{
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye!");
}//end main
}
I was getting the error:
我收到错误:
C:\JavaP>java -cp .;C:\JavaP\mysql-connector-java-3.1.14-bin-g Database1
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at Database1.main(Database1.java:17)
Goodbye!
After hours of googling and online searching I was finally able to resolve my problem (-when location of java lib folder (C:\Program Files\Java\jdk1.8.0_05\lib in my case) is maintained in environment variables, none of the java programs could execute.)
经过数小时的谷歌搜索和在线搜索,我终于能够解决我的问题(-当 java lib 文件夹(在我的情况下为 C:\Program Files\Java\jdk1.8.0_05\lib)的位置在环境变量中维护时,没有java程序可以执行。)
But now I am stuck with another issue:
但现在我遇到了另一个问题:
C:\JavaP>java -cp .;C:\JavaP\mysql-connector-java-3.1.14-bin-g.jar Database1
Exception in thread "main" java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at Database1.main(Database1.java:17)
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.Signature
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
采纳答案by Sajan Chandran
You need to add
the location of the jar
file containing the class org.aspectj.lang.Signature
to your classpath
您需要将包含类add
的jar
文件的位置添加org.aspectj.lang.Signature
到您的classpath
like.
喜欢。
java -cp .;C:\JavaP\mysql-connector-java-3.1.14-bin-g.jar;C:\JavaP\aspectj.jar Database1
回答by javaPlease42
Here's the Manifest of the JAR that works:
这是有效的 JAR 的清单:
Manifest-Version: 1.0
Name: org/aspectj/lang/
Specification-Title: AspectJ Runtime Classes
Specification-Version: 1.8
Specification-Vendor: aspectj.org
Implementation-Title: org.aspectj.tools
Implementation-Version: 1.8.7
Implementation-Vendor: aspectj.org
Bundle-Name: AspectJ Runtime
Bundle-Version: 1.8.7
Bundle-Copyright: (C) Copyright 1999-2001 Xerox Corporation, 2002 Palo
Alto Research Center, Incorporated (PARC), 2003-2009 Contributors.
All Rights Reserved.
回答by feng jacend
In fact, I think you choose the debug version jar for jdbc driver, when I download MySQL SQL driver jarand extract the zip file, it looks like below:
实际上,我认为您选择jdbc驱动程序的调试版本jar,当我下载MySQL SQL驱动程序jar并解压缩zip文件时,如下所示:
You should choose the jar having the name like mysql-connector-java-5.0.8-bin.jar
but not mysql-connector-java-5.0.8-bin**-g**.jar
in debug folder.
您应该选择名称为 likemysql-connector-java-5.0.8-bin.jar
但不在mysql-connector-java-5.0.8-bin**-g**.jar
调试文件夹中的 jar 。