zoukankan      html  css  js  c++  java
  • java.lang.ClassNotFoundException 解决方案

    如何定位一个类的加载路径

    Class 通常是从 .jar 文件中加载的, 遇到 ClassNotFoundException 时我们可能需要定位这个类是哪个模块提供的
    Class#getProtectionDomain() 可以帮到我们

    fun main(args: Array<String>) {
            val c = Class.forName(args[0])
            println("${ c.getProtectionDomain() }")
    }
    

    比如 javax.activation.DataHandler 在 JDK 11 中被弃用删除, 但是 JavaMail 需要这些类, 在 Maven 库 https://mvnrepository.com/artifact/javax.activation/activation/1.1.1 下载 jar 文件之后

    $ jk -cp activation-1.1.1.jar MainKt javax.activation.DataHandler
    ProtectionDomain  (file:/home/xxx/kt/FindClass/activation-1.1.1.jar <no signer certificates>)
     jdk.internal.loader.ClassLoaders$AppClassLoader@1affbebc
     <no principals>
     java.security.Permissions@4a574795 (
     ("java.io.FilePermission" "/home/xxx/kt/FindClass/activation-1.1.1.jar" "read")
     ("java.lang.RuntimePermission" "exitVM")
    )
    
    

    由此我们就可以知道 生产环境 和 开发环境 之前究竟是缺少了哪些 jar 文件, 从而解决异常了


  • 相关阅读:
    Java常见异常处理情况
    动手动脑总结
    动手动脑 总结
    二柱子测试三
    动手动脑总结
    动手动脑总结
    Docker同步IDEA
    UISlider
    Docker 部署 uwsgi+nginx + django
    UITableView 九宫格
  • 原文地址:https://www.cnblogs.com/develon/p/11703486.html
Copyright © 2011-2022 走看看