有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个名为mylib.jar的本地jar文件。我想在Gradle Java项目中将其用作依赖项

这就是我尝试的:

我在project root下创建了一个libs/文件夹。我把jar文件放在libs/文件夹下

MyProject
 ->libs/mylib.jar
 ->build.gradle
 ->src/...

以我的身材。格雷德尔:

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

下面是我如何使用这个罐子:

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

共 (4) 个答案

  1. # 1 楼答案

    以防万一:

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

    javac -cp .;lib\* *.java
    

    2-java文件中还必须提到导入 java add中的示例

    import static org.lwjgl.glfw.GLFW.*;
    
  2. # 2 楼答案

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

    您可以尝试以下构建。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'
    }
    
  3. # 3 楼答案

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

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

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

  4. # 4 楼答案

    Similar answers suggesting

    1. 本地主任

    Add next to your module gradle (Not the app gradle file):

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