【问题标题】:Make sure that all Java classes referenced inside JAR/classpath are present in the JAR/classpath确保 JAR/classpath 中引用的所有 Java 类都存在于 JAR/classpath 中
【发布时间】:2015-07-24 08:03:24
【问题描述】:

我想确保 JAR 在部署到服务器之前不会引发 NoClassDefinitionFound 异常。更高级的要求是能够指定额外的类路径。

如何做到这一点?

【问题讨论】:

标签: java jar code-analysis


【解决方案1】:

一般来说这是不可能的,因为您的 JAR 文件可以使用 Class.forName()ClassLoader.loadClass() 方法动态加载类

我会说正确的方法是在构建过程中使用一些依赖管理工具,它会为你组装所有的依赖。

Maven 战争插件会自动为你做这件事

【讨论】:

  • JVM 必须能够从字节码中提取 Class.forName() 和 ClassLoader.loadClass() 调用以及传递给它们的 FQN,对吧?那为什么其他工具不能呢?
  • 因为通常实际值仅在运行时才知道 - Web 应用程序本身就是一个很好的例子:应用程序服务器在解析 web.xml 或扫描 jars 之前不知道要加载哪些类注释
猜你喜欢
  • 2011-12-07
  • 2012-11-17
  • 2018-02-27
  • 2023-04-02
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
相关资源
最近更新 更多