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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 09:48:59  来源:igfitidea点击:

NoClassDefFoundError: org/aspectj/lang/Sign

javamysql

提问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 addthe location of the jarfile containing the class org.aspectj.lang.Signatureto your classpath

您需要将包含类addjar文件的位置添加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文件时,如下所示:

enter image description here

在此处输入图片说明

You should choose the jar having the name like mysql-connector-java-5.0.8-bin.jarbut not mysql-connector-java-5.0.8-bin**-g**.jarin debug folder.

您应该选择名称为 likemysql-connector-java-5.0.8-bin.jar但不在mysql-connector-java-5.0.8-bin**-g**.jar调试文件夹中的 jar 。