java - Jasypt 加密异常 : Exception in thread "main" java. lang.NoClassDefFoundError: org/jasypt/encryption/StringEncryptor

标签 java noclassdeffounderror jasypt

我有简单的java控制台应用程序,我在其中使用Jasypt1.9.2来加密数据库连接字符串。代码在 Eclipse 中运行得很好,但是导出为 Jar 的应用程序会出现此错误 enter image description here

这是我的简单主类:

    public static void main (String args[])
 {
try {


            GetConnection config = new GetConnection();
            out = config.getLogFile();
            System.out.println("Start");
            Interface.writeLine(out, "Start");

            while (true) {
            new Interface().ProcessProcedure();
            new Interface().ProcessKTP();
            new Interface().TransferToPRF();
            System.out.println("End");



        Thread.sleep(90000);
            }



        }
        catch (java.lang.Exception ex) {
            System.out.println("Error:"+ex);
        }
    }

这是我的 GetConnection 类

public Connection getSql(BufferedWriter out){

        try{


                StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();       

                prop = new EncryptableProperties(encryptor);    //--fOR ENCRYPTED PASSWORD


                String fileName = System.getProperty("user.dir") + "\\configuration.properties";
                InputStream is = new FileInputStream(fileName);    



            //InputStream inputStream;



                if (is != null) {
                    prop.load(is);
                } else {
                    throw new FileNotFoundException("Configuration property not found");
                }


            String Driver =  prop.getProperty("sqlserver.driver");
            String url = prop.getProperty("sqlserver.durl");
            String id = prop.getProperty("sqlserver.uid");
            key = "123"                                                      
            encryptor.setPassword(key);                                     
            String sqlpass = prop.getProperty("sqlserver.pass").trim();


            Class.forName(Driver).newInstance();
            Connection conMSSQL = DriverManager.getConnection (url,id,sqlpass);




            if(conMSSQL != null && conMSSQL.isValid(0)) {

                GetConnection.writeLine(out,"Connection established");


            }
            return conMSSQL;
            }
            catch( Exception ex ){

                GetConnection.writeLine(out,"Exception at Kondor connection");  
                GetConnection.writeLine(out,ex.getMessage());


                return null;
            }


    }

我已检查并验证了 Jasypt1.9.2.jar 条目的类路径。 请帮忙。

最佳答案

NoClassDefFoundError 表示 JVM 尝试访问某个类,但没有找到它。

您已将项目导出到 JAR 文件,但未导出其依赖项。

从 eclipse 导出时选择packagerepack 选项。

这会将依赖项添加到导出的 JAR 文件中。

关于java - Jasypt 加密异常 : Exception in thread "main" java. lang.NoClassDefFoundError: org/jasypt/encryption/StringEncryptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59979797/

相关文章:

java - SQL 更新不适用于整数 ID

java - 显式加载 - java.lang.ClassLoader

java - 我应该如何配置 Jetty 7 pre3 以使用 oracle JDBC 源?

google-app-engine - jTwitter、oAuth 和 Google App Engine。没有发现类定义错误

java - 使用 JASYPT + Hibernate + Spring 进行字符串加密

Java:println 中的 boolean 值( boolean 值? "print true":"print false")

java - 在 Android 项目中引用(纯 Java)项目(找不到类)

java - 线程 "main"java.lang.NoClassDefFoundError 而不是 MainMethodNotFound 中的异常

java - 使用 Jasypt 和随机盐进行密码加密和解密

security - Jasypt StandardPBEStringEncryptor 在 spring bean 配置文件中设置密码