java - 无法使用 IntelliJ 生成可行的 .jar

标签 java maven intellij-idea jar compilation

首先,如果不使用 Artifacts,我无法使用 IntelliJ 生成 .jar,我不明白为什么。我制作我的项目,构建它,运行它,制作模块,但没有一个在 out 目录中生成 de .jar ...也许原因是我从不等到运行结束并且总是用 alt+F2 中断,因为程序完全运行起来很长,它是一个机器人。

然后我尝试使用 IntelliJ 中的 Artifact 函数生成 .jar,但它生成了一个我无法运行的 .jar:

-java prgr.jar 返回错误:无法找到或加载主类 prgr.jar 并且-java -jar prgr.jar返回prgr.jar中没有主要 list 属性

因此,鉴于当我从 IntelliJ 运行主类时,我的程序运行完美,我遇到了几个问题:

  1. 命令之间有什么区别:-java prgr.jar-java -jar prgr.jar

  2. 什么是 MANIFEST.MF 以及如何使用它?

  3. 如何生成可以从 shell 运行的 .jar?如何正确使用 Artifact 功能,我必须放置哪些文件以及在哪里才能使其工作?

编辑:我刚刚看到我需要 MANIFEST.MF,但是如何告诉 .jar 在哪里可以找到 MANIFEST?

最佳答案

如果您在应用程序中包含任何签名的 JAR,然后使用 IntelliJ 构建 Artifact ,它将提取 JARS 并将它们与您编译的输出捆绑在一起。

这会导致 JAVA 安全异常。我在已签名的 Eclipse Paho 和 Bouncy CaSTLe 上看到了这一点。

您可以检查您正在使用的任何库 JAR 是否已使用 jarsigner 工具进行签名。

jarsigner -verify -verbose  <path to library JAR>

更改您的 IntelliJ Artifact 设置,以便将它们捆绑为库而不是提取。如您所料,提取会使证书失效。

See how Paho and BCP are not extracted during artifact creation

尝试仅使用 Main 创建一个虚拟项目。一次添加 1 个库 JAR(您尝试使用其构建)。每次构建一个输出 JAR,直到 Main 中断。我就是这样发现的。

IntelliJ 应该警告你......

关于java - 无法使用 IntelliJ 生成可行的 .jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623605/

相关文章:

java - IntelliJ 与大文件作斗争......改进建议?

android - android studio 中未确定包名

java - 如何创建一个重复函数的方法?

java - 使用 Jackson 处理 json 反序列化中缺失的类

eclipse - Maven "Module"与 "Project"(Eclipse、m2eclipse 插件)

google-app-engine - GAE Apache Maven 插件的配置标签说明

intellij-idea - 如何防止 Intellij IDEA 自动关注调试器事件?

java - Servlet 过滤器 - 操作 JSP 响应数据的问题

java - 从字符串创建 URL

java - 使用 Maven 将 XML 文件放入 jar 的非资源中