繁体   English   中英

在我的 Gradle Java 项目中使用本地 jar 作为依赖项

[英]Use local jar as a dependency in my Gradle Java project

我有一个名为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中定义的公共类。 为什么?

===== 更多信息 =====

我的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();
}

类似的答案暗示

  1. 本地目录

在您的模块 gradle 旁边添加(不是应用程序 gradle 文件):

 repositories { flatDir { dirs 'libs' } }
  1. 相对路径:
 dependencies { implementation files('libs/mylib.jar') }
  1. 使用compile fileTree
 compile fileTree(dir: 'libs', include: 'mylib.jar')

我认为你应该在依赖声明中使用compile name: 'mylib'在这种情况下flatDir将搜索 mylib.jar。

您可以尝试关注 build.gradle (它适用于我的项目):

plugins {
    id 'java'
}
apply plugin: 'java-library'

group 'dependency'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile  name: 'mylib'
}

只有*.aar需要flatDir存储库(它是 Android 特定的库格式,与给定的上下文完全无关)。 implementationapi影响可见性,但这些也是 Android DSL 特定的)。 在一个常见的 Java 模块中,可以这样引用:

dependencies {
    compile fileTree(include: ["*.jar"], dir: "libs")
}

并确保将*.jar放入模块内正确的libs目录中。

以防万一:

1 - 编译器必须有权访问 lib 目录和 jar 示例:

javac -cp .;lib\* *.java

2 - 还必须在 java 的 java 文件示例中提及导入

import static org.lwjgl.glfw.GLFW.*;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM