我从教程中获取了以下代码:
import javax.swing.*;
import java.util.Date;
public class SwingGUI {
public static void main( String[] args )
{
JFrame f = new JFrame( "test" );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setSize( 1500, 900 );
JLabel l = new JLabel( String.format( "%tT", new Date() ) );
f.add(l);
f.setVisible( true );
}
}
f.add(l);
突出显示,并显示两个错误:
Container类型中的方法add(Component)不适用于参数(JLabel)
无法解析javax.swing.JComponent类型。它是从所需的.class文件间接引用的
相对较新的java,我真的不明白Eclipse试图告诉我什么。我能做些什么才能让它发挥作用?
编辑:代码在没有行f.add(l);
的情况下运行,因此问题不在于找不到JFrame或JLabel。在稍微摆弄一下后,我摆脱了第一个错误,但第二个仍然存在。组件无法解析,因为它是间接引用的。这是什么意思?
答案 0 :(得分:5)
显然问题不在于代码,因为它适用于其他所有人。所以我决定删除并重新安装java和eclipse,etvoilà!现在它有效。谢谢大家的反馈。
答案 1 :(得分:3)
只是猜测,但它符合您描述的问题:
当您自己的包中包含名为JLabel
的类时,可能会出现此问题。然后,本地类将从JLabel
- 包中隐藏导入的javax.swing
- 类,它可能与原始类没有相同的类层次结构。
总结一下:以现有的JDK类命名自己的类通常是一个坏主意。
答案 2 :(得分:3)
我遇到了同样的问题,发现我的项目使用的是Java 8库。
我安装了Java 7库,通过引用已安装的C:\Program Files\Java
文件夹中的库将相同的内容添加到项目属性中,错误消失了。
看起来,新的Java 8版本可能采用不同的方式来解决swing组件。
答案 3 :(得分:3)
在eclipse中将系统库下的执行环境更新为JavaSE-1.7或JavaSE-1.8应该可以解决该问题。 要更新以下步骤,请按照以下步骤操作:
> Right-click on the project
> Select properties
> Java build path
> Library > Add Library > Add JRE SYSTEM Library
> Execution Environment
> Select JavaSE-1.7 or JavaSE-1.8
> Finish
答案 4 :(得分:2)
我也遇到了这个问题。 不幸的是解决它我需要安装我的日食。但我认为问题是 Eclipse中JRE和JAVA版本之间不兼容。
当我的项目(和我的eclipse indigo)无法升级到JAVA8时,我使用了JRE支持的JAVA8。更新到另一个可以支持java 8的eclipse可以解决问题。
答案 5 :(得分:1)
答案 6 :(得分:1)
我是新来的。我有这个问题,花了我2天的研究。我通过添加一个包含Eclipse所有必需组件的外部JAR文件来解决它。右键单击项目>> Buildpath>>配置构建路径>>添加外部JARS并浏览计算机上的JAR文件。可以在此处下载JAR文件http://www.java2s.com/Code/Jar/j/Downloadjsdgstubsjre15jar.htm 希望这可以帮助那些人。
答案 7 :(得分:1)
问题不在代码中 。
这是因为项目的JRE配置错误。 这可能是由于项目的JRE和工作区的Jre之间存在差异。
可以通过更新Eclipse或Jre ...
来解决但在我身边,我建议你这样做..
转到窗口 - >首选项 - > Java - >已安装的JRE --->执行环境 - >选择项目的JRE和勾选完美匹配已安装JRE 。
如果 您没有匹配的JRE下载,请使用添加按钮将其添加到已安装的JRE中。
最后,重新启动Eclipse IDE。 这对我来说很好......
如果不起作用, UPDATE Eclipse ..
答案 8 :(得分:0)
我在eclipse IDE中也面临同样的问题,但是在将jar文件更改为jre7(右键单击项目>> Buildpath>>配置构建路径>> AddLibrary>> Jre系统库)之后,错误已经已经解决了,我不知道有什么可以解释它。