gpt4 book ai didi

java - 安卓工作室 : JavaSE app

转载 作者:行者123 更新时间:2023-12-03 05:50:50 35 4
gpt4 key购买 nike

我正在开发一个应该在 Android 和桌面(JavaSE)上运行的项目。为此,我将它分成 3 个 java 模块:

  • 安卓应用
  • 通用核心
  • 桌面应用

  • 为什么我使用 Android Studio (AS) 是显而易见的。除了 JavaSE 模块的“运行”按钮之外,我几乎可以完成所有工作。问题很简单:类路径不完整。该模块编译,但它不运行。当我将它构建到 JAR 中时,它运行良好。 JAR 包含所有必需的依赖项。唯一的问题是在 JavaSE 模块上使用时该死的“运行”按钮。

    顶级 build.gradle:(几乎由 AS 生成)
    // Top-level build file where you can add configuration options common to all sub-projects/modules.

    buildscript {
    repositories {
    jcenter()
    google()
    }

    dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    }
    }

    allprojects {
    repositories {
    jcenter()
    google()
    }
    }

    task clean(type: Delete) {
    delete rootProject.buildDir
    }

    CommonCore build.gradle:
    apply plugin: 'java-library'

    targetCompatibility="1.8"
    sourceCompatibility="1.8"

    dependencies {
    api 'org.nanohttpd:nanohttpd:2.3.1'
    api 'com.google.code.gson:gson:2.8.1'
    api 'org.apache.commons:commons-text:1.1'
    api files('src/main/resources')
    }

    桌面应用程序 build.gradle:
    apply plugin: 'java'

    targetCompatibility="1.8"
    sourceCompatibility="1.8"

    dependencies {
    implementation project(':CommonCore')
    implementation 'org.xerial:sqlite-jdbc:3.21.0.1'
    }

    jar {
    manifest {
    attributes 'Main-Class': 'myproject.Main'
    }

    from {
    configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    }

    AndroidApp build.gradle:(跳过实际的 android 设置以保持简短)
    apply plugin: 'com.android.application'

    dependencies {
    implementation 'com.android.support:appcompat-v7:26.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation project(':CommonCore')
    }

    android { ... }

    当我运行它时,我得到:
    Exception in thread "main" java.lang.NoClassDefFoundError: fi/iki/elonen/NanoHTTPD

    显然 JVM 无法从 CommonCore 中找到依赖项 'org.nanohttpd:nanohttpd:2.3.1'。检查类路径后,我看到:
    /Applications/Android Studio.app/Contents/jre/jdk/<a ton of unused JARs>
    /Users/bamboo/AndroidStudioProjects/MyProject/DesktopApp/build/classes/java/main
    /Users/bamboo/AndroidStudioProjects/MyProject/CommonCore/build/classes/java/main

    Gradle 托管依赖项缺少条目。

    我做错了什么? AS 必须看到它们,因为自动完成效果很好。

    最佳答案

    将依赖项放在 runtime() 中在 gradle 中,例如:

    dependencies {
    runtime(
    [group: 'org.nanohttpd', name: 'nanohttpd', version: '2.3.1'],
    )
    }

    Reference

    关于java - 安卓工作室 : JavaSE app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47878682/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com