为何在Eclipse中无法使用org.apache.commons.math3 3.6.1版本?
问题原因分析与解决方案
这问题的核心原因既不是Eclipse的问题,也不是你本地电脑的问题,而是Apache Commons Math 3.6.1版本对单变量求解器的包结构做了重构,具体细节如下:
- 在3.6版本中,
PegasusSolver类确实位于org.apache.commons.math3.analysis.solvers包下,所以你之前的导入语句和代码都能正常工作。 - 但到了3.6.1版本,Apache团队将所有单变量求解器类(包括
PegasusSolver)移到了新的子包org.apache.commons.math3.analysis.solvers.univariate中。
这直接导致了你遇到的两个现象:
- 当你输入
org.apache.commons.math3.analysis.solvers.之后,Eclipse的自动补全列表为空——因为这个包下已经没有PegasusSolver了; - 直接写
PegasusSolver会报错——因为JVM在原来的包路径下找不到这个类。
解决办法
如果你想继续使用3.6.1版本,只需要修改你的导入语句:
import org.apache.commons.math3.analysis.solvers.univariate.PegasusSolver;
你可以自己验证这个变化:打开commons-math3-3.6.1.jar查看内部目录结构,就能看到univariate子包下的PegasusSolver.class文件;而3.6版本的jar里,这个类还是在原来的solvers包下。
内容的提问来源于stack exchange,提问作者ngong
相关产品推荐
相关产品推荐

