java - 使用 Gradle 和 NetBeans 构建可执行 jar

标签 java gradle netbeans jar executable

我已经搜索了两天来解决这个问题,但没有找到解决方案。首先我想构建 fat-jar,然后我放弃了它看起来更复杂,所以我开始构建普通的可执行 jar。我正在使用 Gradle 插件在 NetBeans 8.2 中构建一些程序( http://plugins.netbeans.org/plugin/44510/gradle-support )

我的项目结构是这样的:

Project Structure

我对 Gradle 比较陌生,我使用它还不到一个月。我的 build.gradle 看起来像这样:

repositories {
   mavenCentral()
}

dependencies {
    // TODO: Add dependencies here ..
//    //   http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies
//    testCompile group: 'junit', name: 'junit', version: '4.10'

    // https://mvnrepository.com/artifact/org.apache.poi/poi
    compile group: 'org.apache.poi', name: 'poi', version: '3.16'

    // https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.16'

    // https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox
    compile group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.6'


}

apply plugin: 'java'


mainClassName = "paket.Glavna"

jar {
    from {
        (configurations.runtime).collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    manifest {
        attributes("Main-Class": "Glavna" )
    }
}

现在,我无法让它工作来制作可执行的 jar。我想我已经追踪到 jar 中没有主类路径的问题,但我不知道为什么它不添加它。我得到的错误是:

错误:无法找到或加载主类 DnevniIzvestajG-1.0.jar

jar 运行(Glavna 类中是 main): java -cp 项目名称.jar paket.Glavna

我也尝试过运行 list 添加 但他也没有添加主类的链接。

最佳答案

尝试使用 main() 方法向类添加包。

jar {
    archiveName = 'Glavna.jar'

    manifest {attributes 'Main-Class': 'paket.Glavna'}

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

像这样构建一个 fat jar 子并不可取,请尝试 Application plugin

关于java - 使用 Gradle 和 NetBeans 构建可执行 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44776338/

相关文章:

java - 将依赖项注入(inject)实用程序类映射

java - 如何通过 Groovy 获取文件 build.gradle 的完整路径?

android - Gradle-无法解决

java - 我看不到Gradle/Maven的意义

java - CardLayout 与使用多个外部 jpanel 的 netbeans

java - 数据类型参数旁边的省略号是什么意思?

java - 过滤和减少之间的区别?

java - 如何在 JMX 中使用 getSystemCpuLoad()

java - 运行时调整 JScrollPane(包含 JTable)的大小

mysql - Netbeans无法正常连接MySQL数据库的原因是什么?