java - Eclipse 与手动编译的区别

标签 java eclipse generics

我有这段代码:

String packageName = "";
    try {
        packageName = Class.forName(new Exception().getStackTrace()[1].getClassName()).getPackageName();
    } catch (ClassNotFoundException e2) { // TODO Auto-generated catch block
        e2.printStackTrace();
    }

当我将它用作 Eclipse 项目的一部分时,一切正常,但是当我从命令提示符编译相同的 .java 文件时,出现以下错误:

symbol:   method getPackageName()
location: class Class<CAP#1>
 where CAP#1 is a fresh type-variable:
 CAP#1 extends Object from capture of ?
1 error

有什么方法可以改进这段代码以使其正常工作吗?

最佳答案

该错误告诉您正在使用的方法 Class.getPackageName() 不存在。正在查看its javadoc说明这个方法存在,但是从Java 9开始。

结论:您在 Eclipse 中使用 Java 9 或更高版本,但在命令提示符中使用 Java 8 或更高版本。

决定您要使用的 Java 的实际版本,并在各处使用相同的版本。然后阅读该版本JDK的javadoc以了解哪些方法可用。

关于java - Eclipse 与手动编译的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54004919/

相关文章:

java - 编译 PrimeFaces 1.1

java - 我确定最畅销产品的逻辑是否正确?

java - Eclipse 平台是独立的吗?

java - 包含整数和字符串的数组列表

c# - 我可以使用代码契约来解决无法使用通用构造函数约束的问题吗?

java - 将 JLabel 移到前面

java - Spring 和 MongoDB。查找最后存储的对象

java - 如何在 RCP 应用程序中更改 TableViewer 标题的背景

java - liferay-maven-plugin 从 maven Liferay 6.2.5 (6.2 ga6) 部署 war

java - 消除未经检查的警告: cast String to T