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
ここに私が瓶を使用する方法があります:
// 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の横に追加します(アプリのgradleファイルではありません):
repositories { flatDir { dirs 'libs' } }
dependencies { implementation files('libs/mylib.jar') }
compile fileTree
:compile fileTree(dir: 'libs', include: 'mylib.jar')
flatDir
リポジトリは*.aar
にのみ必要です(これはAndroid特定のライブラリ形式であり、指定されたコンテキストとは完全に無関係です)implementation
およびapi
は可視性に影響しますが、これらもAndroid DSL固有)です。一般的なJavaモジュールでは、次のように参照できます:
dependencies {
compile fileTree(include: ["*.jar"], dir: "libs")
}
そして、モジュール内の*.jar
を正しい1つのlibs
ディレクトリにドロップしてください。
依存関係宣言で使うべきだと思います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'
}
念のため:
1-コンパイラはlibディレクトリとjarの例にアクセスできる必要があります。
javac -cp .;lib\* *.Java
2-Javaファイルの例Java add
import static org.lwjgl.glfw.GLFW.*;