当前位置: 首页 > 知识库问答 >
问题:

将apache netbean gradle项目导出到jar文件

史谦
2023-03-14

我已经创建了一个Netbeans Gradle项目,我正试图找到将其导出到。jar文件,以便可以从IDE外部打开它。我在我的项目中使用依赖项,我收到了一个java。lang.NoClassDefFoundError。

为了解决这个问题,我尝试添加

jar {
manifest {
    attributes "Main-Class": "CollegeCounselor.Main"
}

from{

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

    }
}

为了我的身材。格雷德尔档案。然而,这带来了一个java。lang.SecurityException:清单主属性的签名文件摘要无效。

为了解决这个问题,我提出了一个建议

{exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'}

我的档案。这解决了通过命令行运行文件的问题。现在可以通过java-jar运行它了。然而,我仍然无法通过mac上的finder运行它。它告诉我一个错误,说java jar无法启动,并告诉我检查控制台以了解更多细节。我无法理解如何解决这个问题,或者为什么我可以通过命令行而不是通过finder窗口来运行它。我将转到build/libs/file。jar路径并试图打开此文件。

如能就出口该项目的最佳方式提供任何协助,将不胜感激。

这是我的身材。gradle文件:

apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'application'


mainClassName = 'CollegeCounselor.Main'

repositories {
    jcenter()
}



dependencies {
    testCompile 'junit:junit:4.12'
    compile('com.microsoft.graph:microsoft-graph:1.5.+')
    compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.4.0'
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
}

jar {
    manifest {
        attributes "Main-Class": "CollegeCounselor.Main"
    }

    from { (configurations.runtime).collect { it.isDirectory() ? it : zipTree(it) } } 
{
        exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
    }

}

共有1个答案

惠泳
2023-03-14

这对我很有用:

  • 使用项目向导文件创建一个名为gradleproject ect2的简单Gradle应用程序
jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'hello.HelloWorld'
    )
  }
}
  • 然后替换hello。HelloWorld,以及包含main()的类的包和名称,在我的例子中是gradleproject2。Main,所以我修改了构建。格雷德尔看起来像这样:
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'application'


mainClassName = 'gradleproject2.Main'

repositories {
    jcenter()
}

dependencies {
    testImplementation     'junit:junit:4.13'
}

jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'gradleproject2.Main'
    )
  }
}
  • 构建你的项目,该项目将放置jar文件gradleproject2。jar位于{project directory}\build\libs

更改对构建的影响。gradle将更改清单的内容。jar文件中的MF来自:

Manifest-Version: 1.0

...对此:

Manifest-Version: 1.0
Class-Path:
Main-Class: gradleproject2.Main

最后,从命令行运行jar文件。在我的例子中,命令只是java-jar gradleproject2。jar

 类似资料:
  • 我确实检查了已经回答过的问题,这些问题的主题几乎与这个问题相同,但没有一个回答过的问题能够解决我的问题。 我已经在线搜索了大约4个小时,尝试了很多不同的方法来解决我的问题。。 我想在Java做一个乒乓游戏,现在我想导出我的项目,这样我就可以把它发给一些朋友,这样他就可以试试了。 我在这个项目中使用LWJGL,所以我确实在参考库和LWJGL中添加了一些JAR。jar添加了windows本机,它包含在

  • 我今天花了几个小时在谷歌上搜索大多数解决方案都过时了。我在项目所遵从的窗口上使用eclipse,但我无法使它成为一个独立的应用程序,如果没有: 有哪些方法可以将JavaFX11项目导出到可执行jar中,而无需在导出后将其链接到JavaFX-SDK-11.0.2? 谢了。

  • 所以,我已经在互联网上阅读了如何将我的项目提取到一个可运行的Jar文件。 我可以很好地提取它们,但当我尝试运行它时,它什么也不做。 当我在命令提示符下用 它所指向的特定行是: 它正在产生一个空指针异常。当我在eclipse中运行我的项目时,它就很好了。 当我将它导出到一个jar时,它得到一个NPE,我相信这是由于它找不到文件造成的。 以下是我的项目工作区: http://imgur.com/034

  • 有没有什么我应该提前补充的谢谢:)

  • 我正在为我的项目创建一个使用Log4j2的JAR文件。我已将Log4j2 jar(用于核心和API)保存在“src”文件夹下的“lib”文件夹中。在Eclipse中,我导出了我的项目来创建JAR文件,并检查了JAR文件中是否包含/存在“lib”文件夹。 当我从eclipse中运行项目时,它运行得非常好,但是当我尝试通过cmd提示符执行jar时,我得到了以下错误: 导致错误的代码行(第20行)是:

  • 我正在尝试导出一个包含som映像的java项目,但导出后映像并不显示。我看过这些类似的问题和答案: Eclipse导出的Runnable JAR不显示图像 在Eclipse(Java)中用JAR导出图像 当我从Eclipse运行程序时,图像会显示出来,但当我导出它时,它们就消失了。我做错了什么?我真的觉得我什么都试过了,但也许我遗漏了一些简单的细节? 谢谢!