当前位置: 首页 > 知识库问答 >
问题:

Intellij在运行应用程序时不包括类路径的梯度依赖

勾长卿
2023-03-14

IntelliJ在从IDE运行应用程序时不包括对类路径的logback-classic依赖(这是kotlin应用程序,但这不应该有关系)。我的gradle构建包含一行:

    compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.+'

在Intellij中,依赖项正确地列在“外部库”下。

//This import is provided by logback-classic library 
import org.slf4j.impl.StaticLoggerBinder
...
// This compiles successfully, but will trigger ClassNotFoundException when run 
val singleton = StaticLoggerBinder.getSingleton()
        val cl = ClassLoader.getSystemClassLoader()
        val urls = (cl as URLClassLoader).urLs
        for (url in urls) {
            System.out.println(url.file)
        }
...
/Users/knesek/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar
/Users/knesek/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.8.8/bf88c7b27e95cbadce4e7c316a56c3efffda8026/jackson-databind-2.8.8.jar
/Users/knesek/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-jaxb-annotations/2.8.8/e2e95efc46d45be4b429b704efbb1d4b89721d3a/jackson-module-jaxb-annotations-2.8.8.jar
/Users/knesek/.gradle/caches/modules-2/files-2.1/com.sun.mail/javax.mail/1.5.6/ab5daef2f881c42c8e280cbe918ec4d7fdfd7efe/javax.mail-1.5.6.jar
/Users/knesek/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.1.11/88b8df40340eed549fb07e2613879bf6b006704d/logback-core-1.1.11.jar
/Users/knesek/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.1.1/98e484e67f913e934559f7f55f0c94be5593f03c/kotlin-stdlib-1.1.1.jar
/Users/knesek/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.3.9.RELEASE/daa5abf3779c8cad1a2910e1ea08e4272489d8ae/spring-beans-4.3.9.RELEASE.jar
...

有趣的是,logback-core在其中,而logback-classic不在其中(并且logback-core是logback-classic的传递依赖项)。

我试图使InteliJ cahces无效,重建并重新启动InteliJ。从gradle和运行罐子工作很好。有什么建议吗?

共有1个答案

苏选
2023-03-14

这似乎是InteliJ中的一个bug,我将为此提交一份bug报告。包括这个答案和一个解决方案在这里任何人谁可能遇到类似的问题。

似乎当类路径上存在特定的依赖项组合时,那么当您像这样使用gradle依赖项时

compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.+'

当从IDE运行时,它不会被包括在内。但如果你这样包括它:

compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.+'

那就管用了。第一个示例确实工作了一段时间,直到我包含了更多的依赖项。

 类似资料:
  • 我正在和我的朋友一起做一个智能J项目,我们使用MongoDB 我没有设置这些东西,我从一个存储库中克隆了它。但是我的其他朋友已经让它工作了——都在视窗、OSX和Linux上。只有一个人设置了它。 问题是它不知道什么是莫菲/MongoDB(例如,导入不起作用)。 我做了什么: 重新同步渐变 运行Gradle。生成文件 重新审视项目 使缓存无效并重新启动 它仍然不知道MongoDB是什么。所以我尝试让

  • 在分级文档(第8.3节)中定义了java插件类路径。 在Gradle中,依赖项被分组为配置。配置只是一组命名的依赖项。我们将它们称为依赖项配置。您可以使用它们来声明项目的外部依赖项。正如我们稍后将看到的,它们也用于声明项目的发布。 它是否与我们定义为<code>导出类路径=……

  • 问题内容: 我正在使用log4j创建一个Java应用程序。我给出了配置log4j文件的绝对路径,还给出了生成的日志文件(生成此日志文件的位置)的绝对路径。我可以通过以下方式在运行时获取Java Web应用程序的绝对路径: 但是在普通的Java应用程序中,我们可以使用什么呢? 问题答案: 尝试;

  • 我有个问题。尝试改变版本(就像它在互联网上说的),但没有帮助。我已经读过了,这些答案修正了应用程序的类路径,使它包含一个单一的、兼容的org.springframework.plugin.core.pluginregistry版本,但它也没有帮助。 问题: 更正应用程序的类路径,使其包含Org.SpringFramework.http.Converter.Support.AllEncompassi

  • 版本 openjdk版本“11.0.11”2021-04-20 如果可能的话,请不要告诉我像我以前看到其他人回答的那样“阅读基础知识”。我只是不确定为什么我的代码不能在我的最后一个项目中运行。 提前谢谢你!

  • 尝试运行spring项目时出现以下错误: 我认为这个错误可能是由于某些依赖项的版本冲突造成的,但我不是很确定。这是我的第一个Spring项目。 这是我更新的pom。xml文件 如果您发现任何错误,请随时指出并解释原因。尽可能多地学习。