我正在使用Gradle构建系统开发一个IntelliJ插件。这个插件使用一个公共模型,它是一个maven项目。
我已经将mavenLocal包含在我的gradle存储库中,并且还在“dependencies”中添加了编译时依赖项。
代码编译得很好,但我在运行时得到了java.lang.NoClassDefoundError。当我检查gradle中的依赖项时,它并没有列出本地maven jar(模型库)的所有依赖项。
下面是我的建筑的剥离版
plugins {
id 'java'
id 'org.jetbrains.intellij' version '0.4.1'
id 'maven'
}
group 'oracle.nosql'
repositories {
//mavenCentral()
mavenLocal()
}
dependencies {
compile 'oracle.nosql:oracle.nosql.model.common:1.0.0' //this is maven lib
compile 'oracle.nosql:oracle.nosql.model.cloud:1.0.0' //this is maven lib
}
apply plugin: 'maven'
下面是Gradle Dependencies
的输出
compileClasspath - Compile classpath for source set 'main'.M
+--- oracle.nosql:oracle.nosql.model.common:1.0.0M
+--- oracle.nosql:oracle.nosql.model.cloud:1.0.0M
| \--- com.fasterxml.jackson.core:jackson-databind:2.9.7M
| +--- com.fasterxml.jackson.core:jackson-annotations:2.9.0M
| \--- com.fasterxml.jackson.core:jackson-core:2.9.7M
\--- com.jetbrains:ideaIC:2018.3.2M
但在maven中,for模型依赖关系是不同的。
mvn dependency:build-classpath
oracle.nosql.model.cloud ---
[INFO] Dependencies classpath:
...\.m2\repository\oracle\nosql\oracle.nosql.model.common\1.0.0\oracle.nosql.model.common-1.0.0.jar;
D:\oracle-nosql-cloud-sdk-18.298\java\lib\nosqldriver.jar;
...\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.9.7\jackson-databind-2.9.7.jar;...\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;...\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.9.7\jackson-core-2.9.7.jar;...\.m2\repository\junit\junit\4.12\junit-4.12.jar;
特别是gradle依赖项中缺少d:\oracle-nosql-cloud-sdk-18.298\Java\lib\nosqldriver.jar
。
我认为这是导致java.lang.NoClassDefoundError的原因。
给定d:\oracle-nosql-cloud-sdk-18.298\Java\lib\nosqldriver.jar
的绝对路径,我假设您在Maven库中声明了system
依赖项。
CompileClasspath
或RuntimeClasspath
解析的Gradle不包括这些依赖关系。
您必须在Gradle构建中将此依赖项作为文件依赖项添加回来。
配置 jar 包需要在 compile 中添加响应依赖。下面的代码添加了 libs 文件夹中的所有 jar 作为依赖。 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } android { ... } 注意:dependencies DSL 标签是标准 Gradle API 中的一部分,所以它不属于
问题内容: 列出将工作项目部署到其他地方(例如,在不同的OS上)所需的所有依赖项的最有效方法是什么? Python 2.7,Windows开发环境,不是每个项目都使用virtualenv,而是全局开发环境,根据需要安装库,可以从一个项目跳到下一个项目。 我跟踪了必须为给定项目安装的大多数(不确定 所有 )库。我 没有 跟踪与它们一起自动安装的任何子依赖项。这样做同时列出,以及所有曾经被安装的其他库
问题内容: 有没有一种工具可以列出包含JAR中引用的(第三方)类的第三方“软件包”?假设它将从JAR文件定义中识别出什么是“ home”包,并且它将打印出JAR中引用的最高3级的第三方类的标准名称的列表。 目的是我需要找到该JAR文件的Maven依赖项并将其部署为Maven工件。 问题答案: JarAnalyzer: jar文件的依赖项管理实用程序。它的主要目的是遍历目录,解析该目录中的每个jar
问题内容: 在针对本机平台进行开发时,我可以使用ldd列出所有共享库(.so文件),这些文件是我构建的二进制可执行文件,将在启动时尝试加载。但是在交叉编译时,我不知道如何获取相同的信息。在不正常的binutils工具,像或者,可以一起建立了交叉编译,而是,这是一个神秘的shell脚本,显然只能在本地平台上运行。 因此,使用跨目标binutils工具,是否有任何方法可以获取外部二进制文件的动态链接依
可以在pom中包含本地文件。xml,或者在本地存储库中安装jar文件,或者提供指向本地jar的链接,并将范围设置为“system”。如果我包括一个胖jar(=包含所有可传递依赖项的jar),会发生什么?Maven是否仍然能够正确地检测依赖冲突,我是否仍然能够排除我的“胖jar依赖”的一些可传递依赖? 问题是,我正在从事一个遗留软件项目,该项目之前没有使用任何构建工具/依赖关系管理工具(因此所有需要
我们有一个项目a依赖于项目B,项目B依赖于图书馆C。a和B是本地项目,而C是maven central repo的公共图书馆。 波姆。xml用于: 波姆。用于B的xml: 在A中运行mvn dependency:tree-Dverbose时,它不会解析B的依赖项,B中使用的此类依赖项也不会显示在A的Maven依赖项中。这对于编译很好,但在运行时会因为NoClassDefFound错误而失败。 有没