标签: jar

如何使用 IntelliJ 制作具有所有依赖项的 jar 文件,即 Fat jar

我正在尝试制作包含项目中所有依赖项的 jar 文件。我正在使用 IntelliJ。

我尝试了两种方法。

  1. 在 IntelliJ 右上角的 Maven 窗口中,我单击了下面的 pom.xml 中的“clean”和“package”。
    但它不包含任何依赖项。
    我在 window 中使用 IntelliJ,所以我无法点击下面的 CLI 链接。我正在使用 IntelliJ 右上部分的 GUI maven 窗口。
    如何使用 Maven 创建具有依赖项的可执行 JAR?

  2. 我单击了下面的链接中的“构建-构建工件 - 构建”。 如何正确从 IntelliJ 构建 jar? 它似乎包含其他库,但由于某种原因我无法执行该文件。所以,请让我使用 maven window,而不是 build-artifact。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>secret.App</groupId>
  <artifactId>mt</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>mt</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java jar intellij-idea maven-plugin maven

2
推荐指数
1
解决办法
9788
查看次数

无需 POM 即可生成并使用 gradle 依赖

我正在尝试生成 Gradle 项目的 .jar,但是当使用 Maven 发布生成它时,它也会生成一个 .pom 文件。

问题是我有另一个项目,当它实现此依赖项之前它只查找 .jar 而现在它在所有其他项目中查找 .pom 时,我想要做的是该项目停止使用“生成 .pom”发布”任务,或者当实施时它停止寻找 .pom 文件以供其他人工作。

以下是在 Artifactory 项目 A 中生成 .jar 以及项目 B 中使用 A 并查找 .pom 的代码:

publishing {
    publications {
        mavenJava(MavenPublication) {
              groupId = 'com.proteccion.myproject'
              artifactId = 'myproject-base'
              version = '1.0.1'
            from components.java
        }   
    }
    repositories {
        maven {
            name = 'artifactory'
            url 'https://url/artifactory/MyProject'
            credentials {
                username System.getenv("ARTIFACTORY_USER") 
                password System.getenv("ARTIFACTORY_PWD")  
            }
        }
    }
}

repositories {
    jcenter()
    maven {
        url 'https://url/artifactory/MyProject'
        credentials {
                    username System.getenv("ARTIFACTORY_USER") 
                    password System.getenv("ARTIFACTORY_PWD") …
Run Code Online (Sandbox Code Playgroud)

java jar publishing gradle

2
推荐指数
1
解决办法
4549
查看次数

使用预定义配置文件运行 Spring Boot JAR

我正在尝试使用该命令运行我的 JAR 文件java -jar sample.jar,并且我正在使用application.yml具有以下设置的配置文件

spring:
  profiles:
    active:
      - dev
---
server:
  port: 8081
spring:
  profiles: dev
---
server:
  port: 8082
spring:
  profiles: test
Run Code Online (Sandbox Code Playgroud)

但应用程序无法识别返回信息
No active profile set, falling back to default profiles: default并将端口设置为默认 8080 的配置文件

我尝试过类似
java -jar sample.jar -Drun.jvmArguments=-Dspring.profiles.active=dev
java -jar sample.jar -Dspring.profiles.active=dev

在我的pom.xml文件中,我所做的唯一更改是添加<packaging>jar</packaging>属性。

据我所知,maven 配置文件是完全不同的东西,不应该影响 spring 配置文件。

我不知道在哪里寻找问题,因为当我通过Intellij IDEA 中的“运行”按钮启动应用程序时,它工作得很好,并且将每个配置文件设置为活动状态。

这里的实际问题是如何在构建工件时设置要运行的默认配置文件,这样就不需要在运行 jar 的终端命令中放置额外的标志。

我知道有很多像我这样的问题,但他们接受的大多数答案在我的情况下不起作用,其余的也没有得到解答。如果您知道这里可能存在什么问题,请告诉我。预先感谢您的任何帮助!

java spring jar executable-jar

2
推荐指数
1
解决办法
9836
查看次数

我们可以在已经运行的 Kubernetes pod 中运行可执行 jar 文件吗?

我需要执行为我的应用程序编写的诊断程序。该应用程序正在 Kubernetes Pod 中运行/部署。我想在 Kubernetes pod 中复制诊断可执行 jar 文件并在不停止 pod 的情况下执行它。如何才能实现这一目标?是否有特定的方法来使用 Kubernetes pod 环境运行可执行 jar?

java jar executable-jar kubernetes kubernetes-pod

2
推荐指数
1
解决办法
6617
查看次数

Java JAR:无法找到或加载主类

我知道这个问题已经被问了很多次,但我尝试了一些建议,但仍然收到此错误。

我按如下方式运行 jar:

java -jar MyJar-1.0.jar com.me.ldap.ActiveMain,

我的 ActiveMain.java 文件如下所示:

包 com.me.ldap;

public class ActiveMain {
    public static void main(String[] args) throws Exception {
    ...
    }
} 
Run Code Online (Sandbox Code Playgroud)

我也简单地尝试java -jar MyJar-1.0.jar过同样的Error: Could not find or load main class错误。我还研究了类路径选项,但我认为这不适用。

我在 Intellij 中将其创建为 Maven 项目。Maven> Lifecycle> package.

java program-entry-point jar

2
推荐指数
1
解决办法
7266
查看次数

Jenkins SSH Pipeline 步骤 - 需要终端来读取密码

最近我一直在摆弄 Docker/Jenkins,以了解有关 CI/CD 工作流程的更多信息。我的目标是建立一个从 github 获取推送、构建代码并将 JAR 文件发布到远程服务器以进行进一步部署的流程。

我一直在使用Jenkins SSH Pipeline Steps 插件,它允许我通过 SSH 连接到远程服务器来执行命令。

这是部署阶段,其中涉及我要执行的命令:

stage("Deploying") {
            steps {
                script {
                    withCredentials([sshUserPrivateKey(credentialsId: 'e48b15ad-0f5e-4f07-8706-635c5250fa29', keyFileVariable: 'identity', passphraseVariable: '', usernameVariable: 'jenkins')]) {
                      remote.user = jenkins
                      remote.identityFile = identity

                      sshCommand remote: remote, command: 'cd Winston-Bot/; sudo ./kill_winston.sh'
                      sshCommand remote: remote, command: 'rm Winston-Bot/*.jar', failOnError:'false'
                      sshCommand remote: remote, command: 'rm -rf Winston-Bot/src', failOnError:'false'
                      sshPut remote: remote, from: "target/Winston-Bot-${VERSION}-jar-with-dependencies.jar", into: 'Winston-Bot/'
                      sshPut remote: remote, from: "src", into: 'Winston-Bot/'
                      sshCommand remote: remote, command: …
Run Code Online (Sandbox Code Playgroud)

deployment jar jenkins docker jenkins-pipeline

2
推荐指数
1
解决办法
5539
查看次数

pom.xml 无法解析父级?

我是一个 Maven 的“菜鸟”,我正在为我找到的一个开源项目运行 mvn clean install。我正在尝试让它构建一个 jar 文件。当我按照“应该”的方式运行它时,它就会起作用。我收到这个错误...

Non-resolvable parent POM: Could not find artifact
com.gorillalogic.monkeytalk:monkeytalk:pom:1.0.12-SNAPSHOT and 'parent.relativePath'
points at wrong local POM @ line 6, column 10 -> [Help 2]
Run Code Online (Sandbox Code Playgroud)

对于 pom.xml 文件@第 6-10 行我有......

<parent>
    <groupId>com.gorillalogic.monkeytalk</groupId>
    <artifactId>monkeytalk</artifactId>
    <version>1.0.12-SNAPSHOT</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

我缺少一个步骤吗?如果您需要的话我可以提供更多代码吗?

提前致谢!

java xml jar file pom.xml

1
推荐指数
1
解决办法
1万
查看次数

Ant构建不生成jar文件

我拿到了 2000 年的一个旧脚本。它全部用 Java 编写,并且有一个编译文件:

 <?xml version="1.0"?>
    <project name="chat" default="compile" basedir=".">
        <target name="init">
            <property name="conf.dir" value="conf" />
            <property name="src.dir" value="src" />
            <property name="resource.dir" value="resource" />
            <property name="build.dir" value="build" />     
            <property name="release.dir" value="release" />
            <property name="etc.dir" value="etc" />
            <property name="lib.dir" value="lib" />
        </target>



        <target name="clean" depends="init">
            <delete dir="${build.dir}" />       
            <delete dir="${release.dir}" />
        </target>

        <target name="compile" depends="init">
            <mkdir dir="${build.dir}" />
            <javac srcdir="${src.dir}" destdir="${build.dir}" includeAntRuntime="false" debug="true" optimize="false" />        
        </target>

        <target name="release" depends="compile">       
            <mkdir dir="${release.dir}" />

            <jar destfile="${release.dir}/chat_service.jar" basedir="${build.dir}"  includeantruntime="false" />        
        </target>

    </project>
Run Code Online (Sandbox Code Playgroud)

当我在 …

java ant jar build

1
推荐指数
1
解决办法
3400
查看次数

.jar 文件中的图标路径

我的问题是,我的 JFrame 的图标在 Eclipse 中可以工作,但没有它就无法工作。

如果 txtIcon.png 位于 .jar 文件中,我不知道必须使用什么图标路径。

this.setIconImage(new ImageIcon("txtIcon.png").getImage());
Run Code Online (Sandbox Code Playgroud)

请帮我。

亲切的问候

java swing jar image embedded-resource

1
推荐指数
1
解决办法
538
查看次数

JAR 文件是否依赖于机器

我正在使用 Eclipse Juno IDE 用 Ja​​va 制作数学反应游戏。根据我已经完成的研究,IDE 在保存时将所有内容编译成.class文件字节码!现在的问题是,我尝试从 Windows 机器中将所有内容提取到 JAR中,并将 JAR 提供给一些 beta 测试人员。Beta 测试人员在尝试从 Linux/Mac 访问它时报告了问题。我还知道,我将所有内容提取到的可运行 JAR基本上是一个美化的 ZIP压缩文件,其中包含 JVM 理解和执行的字节码。鉴于我的游戏有多个.java文件,我想知道是否:

  1. 将字节码打包到 JAR 中是与机器相关的

  2. 我的选择是确保所有用户都能够玩我的游戏并从中受益;还值得指出的是,我的电脑没有 javac.exe;Sun Microsystems 报告该程序已过时

    System.out.println("Thanks for your patience in advance!");
    
    Run Code Online (Sandbox Code Playgroud)

java jar

1
推荐指数
1
解决办法
1923
查看次数