gpt4 book ai didi

eclipse - 运行openjdk时java.lang.NoSuchMethodError : java. lang.Double

转载 作者:行者123 更新时间:2023-11-29 04:53:31 25 4
gpt4 key购买 nike

我用 java 编写了一个命令行应用程序。它在 eclipse 中完美运行,导出到 jar 在 windows 上的最新 java 中运行,但在 ubuntu 服务器 12.04 openjdk-7-jre-headless 上的某个时刻崩溃。

java version "1.7.0_91"
OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu0.12.04.1)
OpenJDK Client VM (build 24.91-b01, mixed mode, sharing)

Double.min 函数似乎有问题:

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NoSuchMethodError: java.lang.Double.min(DD)D
at Test.main(Test.java:149)
... 5 more

这里是有问题的代码:

String balance = "25000.00"
double MAX = 20000;
String amount = Double.toString(Double.min(MAX, Double.parseDouble(balance)));

我尝试将其编译为不同版本的 java 1.5、1.6、1.7、1.8,但错误仍然存​​在。

解决方案

String amount = Double.toString(Math.min(MAX, Double.parseDouble(balance)));

根据所有出色的答案,Double.min 在 Java 8 之前不可用。但是 Math.min 函数在 Java 6 中的功能完全相同。

最佳答案

Double#min(double, double)是在 Java 8 中引入的,您可以使用它来编译代码。当您尝试使用较旧的 JDK 运行它时,找不到此方法(因为尚未引入),并且您会收到您提到的错误。

您应该确保您使用的是 Java 8 的 JDK,或者更改您的代码以不依赖此方法。例如,通过创建您自己的 min 方法:

public static double min (double a, double b) {
return a < b ? a : b;
}

关于eclipse - 运行openjdk时java.lang.NoSuchMethodError : java. lang.Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34574979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com