diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c364452..66271c7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,7 @@ jobs: java-version: '11' - name: Build fat JAR - working-directory: jni/java + working-directory: examples-jni run: | chmod +x gradlew 2>/dev/null || true gradle shadowJar -PprojectVersion=${{ github.event.inputs.version }} --no-daemon @@ -42,7 +42,7 @@ jobs: uses: softprops/action-gh-release@v1 with: tag_name: ${{ github.event.inputs.version }} - files: jni/java/build/libs/dht-crawler-jni-example-${{ github.event.inputs.version }}.jar + files: examples-jni/build/libs/dht-crawler-jni-example-${{ github.event.inputs.version }}.jar # ────────────────────────────────────────────────────────────────── # 各平台 Rust 构建(example 可执行 + JNI so/dll/dylib) diff --git a/jni/java/README.md b/examples-jni/README.md similarity index 96% rename from jni/java/README.md rename to examples-jni/README.md index b53f8cf..bb2197e 100644 --- a/jni/java/README.md +++ b/examples-jni/README.md @@ -5,7 +5,7 @@ ## 项目结构 ``` -java/ +examples-jni/ ├── build.gradle # Gradle 构建脚本 ├── settings.gradle └── src/main/java/cn/lmcw/dht/ @@ -52,10 +52,10 @@ cargo build --release --features jni #### 2. 运行 Java 示例 -在本目录(`jni/java/`)执行: +在本目录(`examples-jni/`)执行: ```bash -# 使用默认库路径(../../../target/release) +# 使用默认库路径(../target/release) gradle run # 自定义库路径 diff --git a/jni/java/build.gradle b/examples-jni/build.gradle similarity index 77% rename from jni/java/build.gradle rename to examples-jni/build.gradle index 5683cd7..2743e61 100644 --- a/jni/java/build.gradle +++ b/examples-jni/build.gradle @@ -22,17 +22,17 @@ repositories { mavenCentral() } -// 运行时将 native 库路径传入 JVM +// 运行时将 native 库路径传入 JVM(默认指向仓库根 target/release) tasks.withType(JavaExec).configureEach { - def libPath = project.findProperty('lib.path') ?: '../../../target/release' + def libPath = project.findProperty('lib.path') ?: '../target/release' jvmArgs "-Djava.library.path=${libPath}" } // Fat JAR(含所有依赖 + Main-Class):执行 `gradle shadowJar` 生成 shadowJar { - archiveBaseName = 'dht-crawler-jni-example' + archiveBaseName = 'dht-crawler-jni-example' archiveClassifier = '' - archiveVersion = version + archiveVersion = version manifest { attributes 'Main-Class': 'cn.lmcw.dht.DhtCrawlerExample' } diff --git a/jni/java/settings.gradle b/examples-jni/settings.gradle similarity index 100% rename from jni/java/settings.gradle rename to examples-jni/settings.gradle diff --git a/jni/java/src/main/java/cn/lmcw/dht/DhtCrawlerExample.java b/examples-jni/src/main/java/cn/lmcw/dht/DhtCrawlerExample.java similarity index 92% rename from jni/java/src/main/java/cn/lmcw/dht/DhtCrawlerExample.java rename to examples-jni/src/main/java/cn/lmcw/dht/DhtCrawlerExample.java index eb76336..61f400b 100644 --- a/jni/java/src/main/java/cn/lmcw/dht/DhtCrawlerExample.java +++ b/examples-jni/src/main/java/cn/lmcw/dht/DhtCrawlerExample.java @@ -14,9 +14,9 @@ import java.util.concurrent.atomic.AtomicLong; *
  • 在仓库根目录编译 Rust JNI 产物: *
    cargo build --release --features jni
    *
  • - *
  • 在 {@code jni/java/} 目录下运行({@code lib.path} 指向 so/dll/dylib 所在目录): - *
    gradle run -Plib.path=../../target/release
    - * 或直接用默认路径({@code ../../../target/release}): + *
  • 在 {@code examples-jni/} 目录下运行({@code lib.path} 指向 so/dll/dylib 所在目录): + *
    gradle run -Plib.path=../target/release
    + * 或直接用默认路径({@code ../target/release}): *
    gradle run
    *
  • * diff --git a/jni/java/src/main/java/cn/lmcw/dht/DhtCrawlerJni.java b/examples-jni/src/main/java/cn/lmcw/dht/DhtCrawlerJni.java similarity index 100% rename from jni/java/src/main/java/cn/lmcw/dht/DhtCrawlerJni.java rename to examples-jni/src/main/java/cn/lmcw/dht/DhtCrawlerJni.java diff --git a/jni/java/src/main/java/cn/lmcw/dht/DhtListener.java b/examples-jni/src/main/java/cn/lmcw/dht/DhtListener.java similarity index 100% rename from jni/java/src/main/java/cn/lmcw/dht/DhtListener.java rename to examples-jni/src/main/java/cn/lmcw/dht/DhtListener.java diff --git a/jni/java/src/main/java/cn/lmcw/dht/model/DHTOptions.java b/examples-jni/src/main/java/cn/lmcw/dht/model/DHTOptions.java similarity index 100% rename from jni/java/src/main/java/cn/lmcw/dht/model/DHTOptions.java rename to examples-jni/src/main/java/cn/lmcw/dht/model/DHTOptions.java diff --git a/jni/java/src/main/java/cn/lmcw/dht/model/FileInfo.java b/examples-jni/src/main/java/cn/lmcw/dht/model/FileInfo.java similarity index 100% rename from jni/java/src/main/java/cn/lmcw/dht/model/FileInfo.java rename to examples-jni/src/main/java/cn/lmcw/dht/model/FileInfo.java diff --git a/jni/java/src/main/java/cn/lmcw/dht/model/TorrentInfo.java b/examples-jni/src/main/java/cn/lmcw/dht/model/TorrentInfo.java similarity index 100% rename from jni/java/src/main/java/cn/lmcw/dht/model/TorrentInfo.java rename to examples-jni/src/main/java/cn/lmcw/dht/model/TorrentInfo.java