2017-04-13 45 views
3

如果Java版本比较老,那么Java会产生这样一个非常神秘的错误消息:UnsupportedClassVersionError ...。虽然发行说明中提供了必要的Java版本,但许多客户都会通过此错误消息联系支持人员。如何在用户友好的消息中更改UnsupportedClassVersionError?

有没有简单的解决方案来向用户显示更好的错误信息?

我们使用Gradle作为建筑物。我如何编译一个较小的文件类型的文件集?在这个文件中,我们可以做一个版本检查来显示错误信息。

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

+0

这是否帮助http://stackoverflow.com/questions/2591083/getting-java-version-at-runtime –

+0

没错 - 到上添加,也可以使一个Java类是无论是在安装时还是在每次启动程序时运行,该程序都是为JDK 1.1编译的,并且会检查Java的版本 - 如果它太旧,则会显示用户友好的错误消息。 –

回答

1

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

使用javac命令的-source-target选项(参见reference documentation),或由于您使用的摇篮,使用在摇篮适当的相应设置,建立文件,你需要能够部分在较旧的Java版本上运行。

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

+0

如果将此属性设置为较低的值,则会影响所有文件。这不起作用。 – Horcrux7

+0

@ Horcrux7当然,不要把它放在整个项目的主Gradle配置文件中。创建一个单独的模块并仅为该模块进行配置。 – Jesper

0

通过JWS发布您的应用程序。它具有确保安装所需JRE版本的条款。

1

我创建了一个小型图书馆称为use-newer-java,你可以用它来进行版本检查:

  1. 包括use-newer-java作为依赖于你的项目
  2. 设置在你的内置清单的Main-Class:场罐子到 use.newer.java.Version8use.newer.java.Version9等适当的。
  3. 将您的jar清单中的Main-Class-After-UseNewerJava-Check:设置为您应用的普通主类 - 使用较新的Java将遵循此设置,并在进行检查后调用此代码。

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

相关问题