java - 如何在没有(没有主 list 属性)的情况下为现有的 Maven 项目生成 jar 文件?

标签 java maven jar manifest noclassdeffounderror

我是 Maven 新手。我对此一无所知。 我从 Github 下载了一个开源 Maven 项目。 我在 Eclipse 中打开它。我只修改了一行来修改此格式的日期模式:

final String pattern = "%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n";

至此

final String pattern = "%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p - %m%n";

然后,我尝试为该项目生成 jar 文件。 下载的项目附带的pom.xml正在使用packageshade插件。

<plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-shade-plugin</artifactId>
                        <version>${shade.version}</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>shade</goal>
                                </goals>
                                <configuration>
                                    <finalName>name-of-pro-${project.version}</finalName>
                                    <transformers>
                                        <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                            <mainClass>name.of.the.package.and.Mainclass</mainClass>
                                        </transformer>
                                        <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                                    </transformers>
                                    <filters>
                                        <!-- This is necessary to avoid a java.lang.SecurityException -->
                                        <filter>
                                            <artifact>*:*</artifact>
                                            <excludes>
                                                <exclude>META-INF/*.SF</exclude>
                                                <exclude>META-INF/*.DSA</exclude>
                                                <exclude>META-INF/*.RSA</exclude>
                                            </excludes>
                                        </filter>
                                    </filters>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

所以,我尝试使用以下命令从 Maven 获取 jar 文件:

mvn clean package

但是,当我使用此命令运行生成的 jar 文件时:

java -jar app-0.2.0-SNAPSHOT.jar

我收到(无主 list 属性)错误。

no main manifest attribute, in app-0.2.0-SNAPSHOT.jar

我搜索了 MANIFEST.MF 文件以检查其中的属性,但我找不到它。

如果我缺少某些设置,云有人可以帮助我吗?

最佳答案

你不能只运行一个 jar。

您需要在命令行上指定完整的类路径,或者需要将 jar 构建为 jar-with-dependencies ,例如此处描述:

https://stackoverflow.com/a/574650/927493

关于java - 如何在没有(没有主 list 属性)的情况下为现有的 Maven 项目生成 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60955016/

相关文章:

java - LAN 上的 Maven 设置

java - maven-shade-plugin 中的 list 不起作用

maven - 如何将闭源库发布到jCenter?

java - 如何在运行时从外部 jar 访问方法?

java - Archiva/Maven 作为企业存储库

java - 在 Spring boot 中使用 mysql join 作为一个 java 对象返回两个表的数据

java - 使用 Jigloo Swing 在同一位置放置 2 个 JPanel

java - 无法访问类的绑定(bind)信息

java - 在可执行 JAR 中将 JavaFX 库与 Maven 捆绑在一起(适用于 Java 11+)

java - jar导出后找不到类