Maven 依赖项版本控制和 java.lang.NoClassDefFoundError

2023-12-28

我有一个 Java 项目 X 依赖于项目 Y(在 pom 文件中)。

我在 Y 中进行修改并使用 Maven 工具构建 X,Y,然后运行 ​​X(在 JBoss 上)没有问题。

当我在 Y 中添加新类然后使用 Maven 构建(没有问题),然后运行 ​​X 时,它会抛出java.lang.NoClassDefFoundError为了新班级。

我认为它是 Maven 依赖版本控制或类似的东西...我主要在 Google 搜索,但没有任何效果...如何解决这个问题?


Moro,您在评论中写道,X 声明了以下依赖项:

<dependency>
  <groupId>Y</groupId>
  <artifactId>Y</artifactId>
  <scope>provided</scope>
  <version>1.0</version>
</dependency>

第一点。您在这里使用“固定”版本(而不是“SNAPSHOT”)。使用时SNAPSHOT,maven会自动抓取最新的SNAPSHOT 每次你建造。另一方面,当你使用 1.0 时,一旦 maven 下载了这个工件,它就会never尝试获得新的 1.0。因此,您应该增加 Y 的版本,或者,如果 Y 正在积极开发(增强、错误修复等),您应该真正使用SNAPSHOT。 欲了解更多信息SNAPSHOT,查看章节9.3.1.2。快照版本 http://www.sonatype.com/books/maven-book/reference/pom-relationships-sect-pom-syntax.html#pom-relationships-sect-snapshot-versionsSonatype 的书:

你为什么要用这个?快照 版本用于以下项目 积极发展。如果你的项目 取决于一个软件组件 正在积极开发中,您可以 取决于快照版本,并且 Maven 将定期尝试 从 a 下载最新的快照 运行构建时的存储库。 同样,如果您的下一个版本 系统将会有一个版本 “1.4”,您的项目将有一个 版本“1.4-SNAPSHOT”直到它 正式发布。

第二点。您正在使用一个provided范围。根据章节9.4.1.依赖范围 http://www.sonatype.com/books/maven-book/reference/pom-relationships-sect-project-dependencies.html#pom-relationships-sect-dependency-scope:

provided当使用依赖项时 您期望 JDK 或容器 提供他们。例如,如果您是 开发 Web 应用程序,您 需要可用的 Servlet API 在编译类路径上编译 servlet,但你不会想要 将 Servlet API 包含在 打包的 WAR; Servlet API JAR 是 由您的应用程序服务器提供或 servlet 容器。provided依赖项可在 编译类路径(不是运行时)。 它们不是传递性的,也不是 包装好的。

这真的是你想要的吗?您如何在 JBoss 上部署 X 和 Y?你不应该使用默认的吗compile scope?

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

Maven 依赖项版本控制和 java.lang.NoClassDefFoundError 的相关文章

  • 在java中将RFC3339 DateTime转换为Date [重复]

    这个问题在这里已经有答案了 如何转换RFC 3339 https www rfc editor org rfc rfc3339java 中的 com google api client util DateTime 到 DateTime 例如
  • java本地时间格式不带年份

    我喜欢将本地时间格式格式化为不带年份的字符串 目前我可以显示包含年份的本地格式 java text DateFormat df java text DateFormat getDateInstance java text DateForma
  • 使用 Intellij 2017.2 /out 目录构建会重复 /build 目录中的文件

    更新到 Intellij 2017 2 后 构建我的项目会创建一个 out包含生成的源文件和资源文件的目录 这些文件与已包含的文件重复 build并导致duplicate class生成的类的编译器错误 关于 Gradle 或 Intell
  • 为什么 hibernate 在一张表中保存两个 @OneToMany 列表?

    想象一下使用 Hibernate 和 JPA 的简化代码如下 Entity class C Id GeneratedValue public long id MappedSuperclass abstract class A Id Gene
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • 通过 JDBC 连接到 DB2 时的用户和密码

    我正在尝试连接到本地 DB2 10 5 Express C 服务器 这是一个测试环境 所以我不关心安全性 我能够连接到命令行处理器 在 Windows 上运行 并且我更改了配置设置AUTHENTICATION CLIENT and TRUS
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • 如何让 HttpClient 返回状态码和响应正文?

    我试图让 Apache HttpClient 触发 HTTP 请求 然后显示 HTTP 响应代码 200 404 500 等 以及 HTTP 响应正文 文本字符串 重要的是要注意我正在使用v4 2 2因为大多数 HttpClient 示例都
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通
  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • 整数与 int 比较

    我是新来的java 我现在正在学习非原始整数类型java 我知道以下比较无效并引发编译错误 String str c Char chr c if str chr return true 上面的代码片段给了我 Test java lineNu
  • 为什么java(>=7版本)不支持运行没有main方法的程序? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 class WithoutMain static System out println Without main class Sy
  • Java 泛型:将 Object o 的类与 进行比较

    假设我有以下课程 public class Test
  • 如何在不同的班级中启动和停止计时器?

    我想测量从传入 HTTP 请求开始到应用程序到达某个点的时间 这两个时间点都位于不同的类中 我将如何启动和停止这些不同类别的计时器 我没有看到使用 MeterRegistry 中的 命名 计时器的方法 我该怎么办呢 您可以使用 AOP 如下
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • Wildfly 10.1 消耗所有核心

    我们最近将银行应用程序从 java 1 6 升级到 1 8 将 jboss 4 x 升级到 wildfly 10 1 我们观察到 java 消耗了机器上可用的所有核心 10 有人可以告诉是什么原因吗 通常情况下 jboss 4 x 的最大
  • logcat 信息出现在 Android Studio 的“运行”选项卡中

    我的 android studio 运行选项卡很简单 然后它变得更难并给我更多信息 例如 logcat 中的信息 如何禁用或删除第二张图片中出现的更多信息并返回到第一张图片中的第一个外观 我只需要正在运行的 flutter 应用程序的日志输
  • 混合语言源目录布局

    我们正在运行一个使用多种不同语言的大型项目 Java Python PHP SQL 和 Perl 到目前为止 人们一直在自己的私有存储库中工作 但现在我们希望将整个项目合并到一个存储库中 现在的问题是 目录结构应该是什么样的 我们应该为每种
  • 在java中打印阿拉伯字符串

    我试图在 java 中显示阿拉伯语文本 但它显示垃圾字符 示例 或有时在我打印时仅显示问号 我如何才能打印阿拉伯语 我听说它与unicode和UTF 8有关 这是我第一次使用语言 所以不知道 我正在使用 Eclipse Indigo IDE

随机推荐