【发布时间】:2019-09-30 03:28:00
【问题描述】:
我有一个名为 mylib.jar 的本地 jar 文件。我想在我的 Gradle Java 项目中使用它作为依赖项。
这是我尝试过的:
我在项目根目录下创建了一个libs/ 文件夹。我把jar文件放在libs/文件夹下。
MyProject
->libs/mylib.jar
->build.gradle
->src/...
在我的 build.gradle 中:
apply plugin: 'java-library'
group 'com.my.app'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
api files('libs/mylib.jar')
}
但我无法访问项目代码中mylib.jar 中定义的公共类。为什么?
===== 更多信息 =====
我的罐子里的内容:
mylib.jar
> com.my.jar.package
>ClassFromJar.class
这是我使用 jar 的方法:
// Compilation error: Cannot resolve symobl 'ClassFromJar'
import com.my.jar.package.ClassFromJar;
public class MyEntryPoint {
// Compilation error: Cannot resolve symbol 'ClassFromJar'
ClassFromJar instance = new ClassFromJar();
}
【问题讨论】:
-
你说的“无法访问公共课程”是什么意思?通过 Gradle 编译是否失败?你使用 IDE 吗?
-
我的意思是那些在jar中声明的公共类不能被编译器解析。
-
但是如何编译它们呢?你如何使用 Gradle?
-
您的设置适合我。您的本地设置中一定有问题未在您的问题中提及。 JAR 文件可以吗?哪个确切的 Gradle 命令因哪个错误而失败?你的“项目代码”看起来如何?你能用显示错误的minimal reproducible example 更新你的问题吗?
-
@Leem.fin 你用的是什么IDE?您的 IDE 编译器是否无法解析它们,或者 Gradle 的命令行编译器是否无法解析它们?这是两个非常不同的事情,你还没有回答。