Maven java 项目构建,但不运行

2024-04-04

我正在从头开始创建一个maven项目,首先学习如何使用maven。 主项目不包含源代码文件,但它有两个模块(app 和 util)。应用程序取决于 util。我想要一个来自应用程序的 .jar,并且如果可能的话没有清单文件。 我可以使用 mvn clean install 编译整个项目,但无法从控制台运行该应用程序。

The 主要项目 .pom is

<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>com.proba</groupId>
  <artifactId>myproject</artifactId>
  <version>0.0.1</version>
<packaging>pom</packaging>


<modules>
  <module>util</module>
  <module>app</module>
</modules>
</project>

实用程序.pom is

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

  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.proba</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1</version>
  </parent>
  <artifactId>util</artifactId>


 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
     </dependency>
 </dependencies>

</project>

app pom is

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.proba</groupId>
        <artifactId>myproject</artifactId>
        <version>0.0.1</version>
    </parent>
    <artifactId>app</artifactId>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.proba</groupId>
            <artifactId>util</artifactId>
            <version>0.0.1</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.proba.app.App</mainClass>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.1.1</version>
                <executions>
                    <execution>
                        <phase>site-deploy</phase>
                        <goals>
                            <goal>java</goal>
                        </goals>
                        <configuration>
                            <mainClass>com.proba.app.App</mainClass>
                            <!--<arguments> <argument>myArg1</argument> <argument>myArg2</argument> 
                                </arguments> -->
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

代码没有做太多事情。 App.java(应用程序模块内的)是 包 com.proba.app;

import com.proba.util.UtilClass;
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        UtilClass uc = new UtilClass(); 
        System.out.println( "QQQQQ: " + uc.print() );
    }
}

我用它编译

mvn clean install
[INFO] Reactor Summary:
[INFO]
[INFO] myproject .......................................... SUCCESS [  0.406 s]
[INFO] util ............................................... SUCCESS [  2.074 s]
[INFO] app ................................................ SUCCESS [  0.535 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

myproject、util、app 成功。

我尝试运行它

java -jar app/target/app-0.0.1.jar
Hello World!
Exception in thread "main" java.lang.NoClassDefFoundError: com/proba/util/UtilClass
        at com.proba.app.App.main(App.java:17)
Caused by: java.lang.ClassNotFoundException: com.proba.util.UtilClass
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

正如你所看到的,你好世界!打印出来了,但是没有找到UtilClass。 我可以从 eclipse 运行构建,但不能从控制台运行。 我做错了什么?你有什么主意吗?


你缺少的是 UtilClass 的 jar。你只需要在你的pom.xml中添加shade插件即可。 作为参考:Maven 阴影插件 https://maven.apache.org/plugins/maven-shade-plugin/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven java 项目构建,但不运行 的相关文章

随机推荐

  • 如何使用列表理解来模拟 sum()?

    是否可以使用 sum 来模拟类似的东西列表理解 http en wikipedia org wiki List comprehension Python 例如 我需要计算列表中所有元素的乘积 list 1 2 3 product magic
  • 发送多个请求时如何将结果与请求匹配?

    总结 正如其标题所示 Guzzle 允许一次发送多个请求以节省时间 如下所示文档 http docs guzzlephp org en latest http client client html sending requests resp
  • Google 地图静态 API 返回奇怪的图像

    我有一个页面 其静态地图 URI 的形式为 当我从任何浏览器访问此页面时 它显示得很好 但当我通过通过我们的 BES 连接的黑莓使用它时 但相同的无线网络 然后出现这个图像 有谁知道这张图是什么意思 你有超出使用限制 http code g
  • 如何获取自定义错误页面(Tomcat)中的消息?

    在 JSP 中 您可以使用response sendError int code String message 返回特定的错误代码 例如 404 表示未找到 和消息 只要您使用默认的丑陋的 Tomcat 错误页面 这些消息就可以正常显示 但
  • Javascript 在 window.open 之后调用函数

    我试图在 window open 函数完全加载后调用一个函数 然而 使用 onload 函数调用得太早了 所点击的 URL 将打开一个 Excel 电子表格 下载可能需要 2 秒到 1 分钟 一旦 window open 函数被调用 onl
  • MvvmCross iOS:如何绑定MapView Annotation跳转到另一个视图?

    当单击标注附件按钮时 如何绑定 MapView 的注释以切换到不同的视图 如何实现注释的 CalloutAccessoryControlTapped 方法 或者最好的方法是什么 这是我的代码 Register MapView public
  • 如何在惰性函数式编程语言中实现调试?

    我想知道如何用惰性函数语言实现调试 你能使用断点 打印语句和传统技术吗 这是个好主意吗 据我了解 纯函数式编程不允许有副作用 除了 monad 之外 执行顺序也无法保证 您是否必须为要测试的每个代码部分编写一个 monad 我想从这个领域更
  • 开发环境中应用程序内部的 Rails FactoryGirl

    我正在尝试在开发模式下在我的应用程序中使用 FactoryGirl gem 用于邮件测试more https github com glebm rails email preview issues 66 issuecomment 21595
  • 用户从下拉列表中选择项目后禁用 Android AutoCompleteTextView

    我用的是安卓系统AutoCompleteTextView with a CursorAdapter将自动完成功能添加到应用程序中 在视图的onItemClickListener 即 当用户触摸自动完成的下拉项之一时 我检索文本并将其放置在
  • 新手:XSLT 转换以验证 XML 文档中的规则

    我是 XSLT 的新手 我有一个 XML 文档 我需要使用 xslt 来验证 XML 文档中的某些规则 XML 和 xsl 文件将在 xsltproc 工具中使用 输出将是简单的 通过 或 失败 XML 示例
  • NSIS - 静默自动更新应用程序

    我有一个适用于我的 net c 应用程序的 NSIS 安装工具包 考虑到我已经将新的更新 新的 NSIS 应用程序版本 下载到本地计算机 有没有办法静默自动更新我的应用程序 谢谢 如果您需要检测命令行 Autoupdate yes incl
  • 为什么Xcode找不到这个头文件?

    您好 我收到一个 xcode 没有这样的文件或目录 import Three20Core h 我还注意到 当我输入 import 语句时 它会识别并帮助自动完成 Three20Core h 文件 但是当我编译时出现错误 这是 Three20
  • Android proguard,设备上的空指针异常

    当我在手机上安装我的应用程序时 出现异常 它无需 proguard 即可工作 我的配置有什么问题 非常感谢 该配置是我在某处找到的默认 Android 配置 不知道发生了什么事 D AndroidRuntime 15388 Shutting
  • 将 Google 地图数据 API 与 iPhone 集成并执行搜索

    有人集成了 Google 的地图数据 API 吗here http code google com p gdata objectivec client 与iPhone应用程序 如果是这样 您能否分享一下框架代码 以便在我的应用程序中抢占先机
  • 有FlushFileBuffers和FILE_FLAG_NO_BUFFFERING不同用途的比较或者性能表吗?

    我将选择在每次写入文件后使用 FlushFileBuffers 或每次需要打开同一个文件时使用 FILE FLAG NO BUFFFERING 但我没有找到任何关于使用一个或另一个选项的性能比较表 好吧 除了这个建议in MSDN http
  • 错误:/lib64/libc.so.6:找不到版本“GLIBC_2.28”(/var/task/cryptography/hazmat/bindings/_rust.abi3.so 需要)

    我需要一个 傻瓜式 的答案来回答这个问题 我知道以前已经有人问过这个问题 我们正在为 AWS 托管的应用程序使用无服务器框架 Runtime python3 8得到了一个不错的大 yml 文件 其中包含 16 个函数 其中 2 个包含用于密
  • Jenkins Pipeline - 调用共享 jar 中的函数

    这是我的项目设置 一个单独的常规项目 多条管道 所有管道脚本均引用共享的 groovy 项目 我浏览了共享库以及所有需要在 Jenkins 全局配置中注册的需求 没有它有什么办法吗 我尝试使用 Grab 但最终出现错误 java lang
  • Word insertOoxml 方法返回错误:所有输入未知

    我有一个现有的 Word 加载项解决方案 该解决方案已经运行良好很长一段时间 但现在无法将 OOXML 内容插入到 Word 文档中 试图解决这个问题 我无法让 insertOoxml 方法在任何情况下工作 重现 await Word ru
  • 如何使用 Solr 选择不同的字段值?

    我想做与此 SQL 相同的操作 但使用 Solr 作为我的数据存储 SELECT DISTINCT txt FROM my table 什么语法会强制 Solr 只给我不同的值 http localhost 8983 solr select
  • Maven java 项目构建,但不运行

    我正在从头开始创建一个maven项目 首先学习如何使用maven 主项目不包含源代码文件 但它有两个模块 app 和 util 应用程序取决于 util 我想要一个来自应用程序的 jar 并且如果可能的话没有清单文件 我可以使用 mvn c