- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想生成一个包含其依赖项的 jar 文件。这是我的 pom.xml:
<?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">
<parent>
<artifactId>vehicle</artifactId>
<groupId>org</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>vehicle.cli</artifactId>
<dependencies>
<dependency>
<groupId>org</groupId>
<artifactId>vehicle.model</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/libs
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<mainClass>
org.vehicle.cli.Main
</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
依赖项 org.vehicle.model 我从自定义的 nexus 存储库中获取它。运行 mvn package
后,我得到了包含 libs 文件夹和 jar 文件的目标文件夹:
- target
- libs
- vehicle.model-0.0.1-SNAPSHOT.jar
- commons-cli-1.4.jar
- vehicle.cli-0.0.1-SNAPSHOT.jar
当我执行 vehicle.cli-0.0.1-SNAPSHOT.jar (java -jar vehicle.cli-0.0.1-SNAPSHOT.jar
) 我得到vehicle.model-0.0.1-SNAPSHOT.jar 中类的异常 java.lang.NoClassDefFoundError这很奇怪,因为我已经在 libs 文件夹中拥有所有依赖项 jar,所以我解压缩 vehicle.cli-0.0.1-SNAPSHOT.jar 以检查 MANIFEST.MF 并查看以下内容:
Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 16
Class-Path: . libs/vehicle.model-0.0.1-20210203.101620-3.jar libs/commons-cli-1.4.jar
Specification-Title: vehicle.cli
Specification-Version: 0.0
Implementation-Title: vehicle.cli
Implementation-Version: 0.0.1-SNAPSHOT
Main-Class: org.vehicle.cli.Main
让我感到困惑的是在 ClassPath 的行中,它正在调用名为 libs/vehicle.model-0.0.1-20210203.101620-3.jar 的 jar 文件,而这个 jar 文件并不存在。我希望它应该调用名称为 libs/vehicle.model-0.0.1-SNAPSHOT.jar 的 jar 文件,因为它是由 maven-dependency-plugin 复制到 libs 文件夹的文件。我不明白版本 -0.0.1-20210203.101620-3 来自哪里。
谁能解释一下这里的问题是什么以及如何解决?谢谢!
最佳答案
我们以前遇到过类似的事情。有一个 bug reported for the jar plugin那不是固定的。幸运的是,有一个解决方法。调整 jar
中的 list 像这样的插件:
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<mainClass>org.vehicle.cli.Main</mainClass>
<useUniqueVersions>false</useUniqueVersions> <!-- important! -->
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
如果这还不够,dependency plugin有一个类似的 <useBaseVersion>
可能启用的属性。
关于java - maven-jar-plugin 生成带有错误 MANIFEST.MF 的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67505356/
当在 python 包中包含外部文件时,我在 MANIFEST.in 中将其定义为 MANIFEST.in include aikif/web_app/static/* 构建包将生成一个 MANIFE
我们使用 java 插件的 manifest 属性将 MANIFEST.MF 文件写入我们的 jar 工件。 我们还使用 gradle 构建 GWT 项目,并且我们为这些项目定义的输出是 zip。我想
感谢您的阅读! 当我做 docker-compose up在 laradock 上,我终于收到了一个类似标题的错误。 在这种情况下,有人知道正确的解决方案吗? 原来我有那个laradock,但我不小心
我收到以下错误,但我的 list 文件没有问题。 我尝试更改项目名称,但更改项目名称后出现此错误。帮助我解决此错误,而无需将项目名称更改回旧名称。 我的旧项目名称是“radio”,我的新项目名称是“M
错误: list 文件没有以最后的换行符结尾... 检查 list 文件是否以最后的换行符结尾(按照 JAR 规范的要求) 应为“:” 这是 AndroidManifest
大家好! 我在部署 Shiny App 时遇到问题。部署应用程序时,我得到以下控制台输出: Preparing to deploy application...DONE Uploading bundl
我开始使用 Android 进行开发。我将 SDK 23 与 Android M 权限的系统一起使用。在互联网的例子中,当我想检查权限时,我发现: this.checkSelfPermission(M
使用 SHA256 摘要标识符 拉取图像失败 最佳答案 不幸的是,这是 DockerHub 删除 Docker 1.9 守护进程的向后兼容性的副作用。当使用 Docker 1.10 推送图像时,较旧的
我正在使用 Next.js 开发一个服务器端渲染网站,我想让它成为一个渐进式 Web 应用程序,但问题是我找不到让它正确发生的方法。 当我构建应用程序时,它可以正确地为 service worker
我在 Windows 上使用 Docker,当我尝试使用此命令提取 PHP 镜像时 $ docker pull php 我收到这条消息: Using default tag: latest lates
我收到错误消息“标记属性包具有无效字符‘’。”在 Android Manifest 中,虽然没有明显的无效字符。这是代码:
我是 JavaScript 开发新手。我正在尝试制作一个可以在 iOS 和 Android 设备上离线运行的应用程序。我在没有示例的情况下学习时遇到困难,而且我找不到满足我需要的示例。 这是我发现的;
我在 Windows 上使用 Docker,当我尝试使用此命令提取 PHP 镜像时 $ docker pull php 我收到了这条消息: Using default tag: latest late
以下是我的代码:。AndroidManifest.xml。在MainActivity.Java中
当我安装 ExtUtils::Manifest 时,perl 推荐我安装 ExtUtils::Manifest。 操作系统为Win10,perl版本为strawberry-perl-5.24.4.1-
我一直在仔细阅读 app.manifest,但我不明白。好吧,我确实知道您需要它来做一些事情,例如:我们确实需要和使用。但还有这个: 这是我没有得到的部分,我可以将其忽略而不会有任何后果,对吗?我们
我创建了一个类如下: #include #define DLLEXPORT _declspec( dllexport ) using namespace std; class DLLEXPORT
我在使用webpack运行应用程序时遇到问题,出现以下错误: URIError: Failed to decode param '/%PUBLIC_URL%/manifest.json' at
我可以使用 Java 执行此操作吗? 我指的是 在 Android list 中 如果不能,我至少可以提供可供用户选择的替代方案吗? 最佳答案 看this and the asker referen
使用maven得到编译好的*.war文件,其中包含: - META-INF - - MANIFEST.MF - WEB-INF - - classes - - lib - - web.xml 使用 j
我是一名优秀的程序员,十分优秀!