【问题标题】:How to change an UnsupportedClassVersionError in a user friendly message?如何在用户友好的消息中更改 UnsupportedClassVersionError?
【发布时间】:2017-04-13 06:08:19
【问题描述】:

如果 Java 版本太旧,那么 Java 会产生这样非常神秘的错误消息: UnsupportedClassVersionError... 。尽管我们在发行说明中提供了必要的 Java 版本,但许多客户联系支持人员并告知此错误消息。

是否有一种简单的解决方案可以向用户显示更好的错误消息?

我们使用 Gradle 来构建。如何使用较低类文件版本编译一小组文件?在此文件中,我们可以进行版本检查以显示错误消息。

当然我们不能更改整个项目的类文件版本。

【问题讨论】:

  • 完全正确 - 除此之外,您可以创建一个在安装时或每次启动程序时运行的 Java 类,它是为 JDK 1.1 编译的,并检查Java - 如果它太旧,您会显示一条用户友好的错误消息。

标签: java gradle compilation


【解决方案1】:

如何用较低的类文件版本编译一小组文件?

使用javac 命令的-source-target 选项(请参阅reference documentation),或者由于您使用的是Gradle,请在Gradle 构建文件中为您的部件使用适当的相应设置需要能够在较旧的 Java 版本上运行。

对于 Gradle,您可以使用 sourceCompatibilitytargetCompatibility 属性,请参阅 Gradle 文档中的 Table 47.8

【讨论】:

  • 如果我将此属性设置为较低的值,则会影响所有文件。这不起作用。
  • @Horcrux7 当然,不要把它放在整个项目的主要 Gradle 配置文件中。创建一个单独的模块并仅为该模块配置它。
【解决方案2】:

我创建了一个名为 use-newer-java 的小型库,您可以使用它来执行版本检查:

  1. 在您的项目中包含 use-newer-java 作为依赖项
  2. 将您构建的 jar 清单中的 Main-Class: 字段设置为 use.newer.java.Version8use.newer.java.Version9 等视情况而定。
  3. 将 jar 清单中的 Main-Class-After-UseNewerJava-Check: 设置为应用的普通主类 - Use Newer Java 将遵循此设置,并在检查后调用此代码。

https://github.com/rtyley/use-newer-java

【讨论】:

    【解决方案3】:

    通过JWS 分发您的应用程序。它具有确保安装所需的 JRE 版本的规定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多