java - 当一个项目的Classpath中缺少一些使用的类时,项目怎么可能运行良好呢?

标签 java maven intellij-idea classloader

有趣的是,我的项目中不存在 MultiTenantConnectionProvider.java,但我的项目可以通过 maven 构建并运行良好。

screenshot of missing class .

我使用Intellij Idea 2016.2。由于该类打包在 mysql-connector-java-5.1.31.jar 中。所以我尝试连接mysql db并查询出一些数据来测试是否运行良好。事实证明,缺课并没有影响项目的顺利进行。这似乎不合逻辑,不是吗?

data can be quired out

最佳答案

一点也不。大多数 JVM 实现都执行 lazy 类加载。这意味着:直到真正需要类时,类加载器才会加载该类;例如,当其他代码实例化此类的对象时。

换句话说:当您的应用程序没有抛出 ClassNotFoundException 时。 a NoClassDefFoundError ...结论是:执行的代码路径根本不需要加载一个类。

就像这样:您可能会注意到您在聚会上丢失了 key ,直到您回到家并尝试打开前门。

换句话说:如果您的程序在没有该类的情况下构建和运行,那么该类就不会被太多使用。

关于java - 当一个项目的Classpath中缺少一些使用的类时,项目怎么可能运行良好呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43412166/

相关文章:

spring - Maven 过滤依赖项中存储的资源

java - Intellij 缓存问题 - 需要重建项目

java - 最接近于 Java/Scala 的 SQLAlchemy

java - 通过树形图和 SQL 填充 JTable

java - Maven(m2e): access dependecy jar file programmatically

netbeans - 使用 EclipseLink 静态编织在 Netbeans 中进行调试

java - 将推送通知从服务器发送到 Java 中的 android 设备

java - "Error setting operation panel"jconsole 在 a

java spring项目没有读取所有依赖项

node.js - IntelliJ 检查说 module.exports 不存在于 nodejs