使用不同jdk执行 在compile时指定source可以compile成功 但在执行时出现NoSuchMethodError错误
时间:2011-11-24
来源:互联网
环境:
我安装了
jdk1.4.2_19
与
jdk1.6.0_29
我的OS是Win 7
///////////////////////
Main.java 原始码如下
public class Main {
public static void main(String[] args){
JFrame jf=new JFrame();
jf.getContentPane().setPreferredSize(new Dimension(1024, 768));
}
}
////////////////////
执行过程
我先将系统执行路设成
C:\Program Files (x86)\Java\jdk1.6.0_29\bin
以下列方式compile
javac -source 1.4 -target 1.4 Main.java
然后将系统执行路径换成
C:\Program Files (x86)\Java\jdk1.4.2_19\bin
然后以下列方式执行
java Main
结果出现下列例外错误讯息
Exception in thread "main" java.lang.NoSuchMethodError: java.awt.Container.setPr
eferredSize(Ljava/awt/Dimension; )V
at Main.main(Main.java:12)
请问一下
照理讲如果1.4不支援setPreferredSize(Ljava/awt/Dimension; )方法,
则当我再使用1.6 compile时 指定source level是1.4时 他就应该不给我compile成功,为舍么
javac -source 1.4 -target 1.4 Main.java
我还可以成功compile呢,而最后导致我用1.4的jdk去执行发生错误...
请问有哪位大大知道原因吗,还是我的观念有错误...
谢谢回覆
我安装了
jdk1.4.2_19
与
jdk1.6.0_29
我的OS是Win 7
///////////////////////
Main.java 原始码如下
public class Main {
public static void main(String[] args){
JFrame jf=new JFrame();
jf.getContentPane().setPreferredSize(new Dimension(1024, 768));
}
}
////////////////////
执行过程
我先将系统执行路设成
C:\Program Files (x86)\Java\jdk1.6.0_29\bin
以下列方式compile
javac -source 1.4 -target 1.4 Main.java
然后将系统执行路径换成
C:\Program Files (x86)\Java\jdk1.4.2_19\bin
然后以下列方式执行
java Main
结果出现下列例外错误讯息
Exception in thread "main" java.lang.NoSuchMethodError: java.awt.Container.setPr
eferredSize(Ljava/awt/Dimension; )V
at Main.main(Main.java:12)
请问一下
照理讲如果1.4不支援setPreferredSize(Ljava/awt/Dimension; )方法,
则当我再使用1.6 compile时 指定source level是1.4时 他就应该不给我compile成功,为舍么
javac -source 1.4 -target 1.4 Main.java
我还可以成功compile呢,而最后导致我用1.4的jdk去执行发生错误...
请问有哪位大大知道原因吗,还是我的观念有错误...
谢谢回覆
作者: w_pomeranian 发布时间: 2011-11-24
w_pomeranian wrote:
环境:
我安装了
jdk1.4.2_19
与
jdk1.6.0_29
我的OS是Win 7
///////////////////////
Main.java 原始码如下
public class Main {
public static void main(String[] args){
JFrame jf=new JFrame();
jf.getContentPane().setPreferredSize(new Dimension(1024, 768));
}
}
////////////////////
执行过程
我先将系统执行路设成
C:\Program Files (x86)\Java\jdk1.6.0_29\bin
以下列方式compile
javac -source 1.4 -target 1.4 Main.java
然后将系统执行路径换成
C:\Program Files (x86)\Java\jdk1.4.2_19\bin
然后以下列方式执行
java Main
结果出现下列例外错误讯息
Exception in thread "main" java.lang.NoSuchMethodError: java.awt.Container.setPr
eferredSize(Ljava/awt/Dimension; )V
at Main.main(Main.java:12)
请问一下
照理讲如果1.4不支援setPreferredSize(Ljava/awt/Dimension; )方法,
则当我再使用1.6 compile时 指定source level是1.4时 他就应该不给我compile成功,为舍么
javac -source 1.4 -target 1.4 Main.java
我还可以成功compile呢,而最后导致我用1.4的jdk去执行发生错误...
请问有哪位大大知道原因吗,还是我的观念有错误...
谢谢回覆
使用 -source 1.4 switch 时,编译会限定只能使用 Java 1.4 (含)以前的语法,这跟你可以使用到哪些语法层面的 feature 有关,与能不能参考 core classes 里的哪些 class
环境:
我安装了
jdk1.4.2_19
与
jdk1.6.0_29
我的OS是Win 7
///////////////////////
Main.java 原始码如下
public class Main {
public static void main(String[] args){
JFrame jf=new JFrame();
jf.getContentPane().setPreferredSize(new Dimension(1024, 768));
}
}
////////////////////
执行过程
我先将系统执行路设成
C:\Program Files (x86)\Java\jdk1.6.0_29\bin
以下列方式compile
javac -source 1.4 -target 1.4 Main.java
然后将系统执行路径换成
C:\Program Files (x86)\Java\jdk1.4.2_19\bin
然后以下列方式执行
java Main
结果出现下列例外错误讯息
Exception in thread "main" java.lang.NoSuchMethodError: java.awt.Container.setPr
eferredSize(Ljava/awt/Dimension; )V
at Main.main(Main.java:12)
请问一下
照理讲如果1.4不支援setPreferredSize(Ljava/awt/Dimension; )方法,
则当我再使用1.6 compile时 指定source level是1.4时 他就应该不给我compile成功,为舍么
javac -source 1.4 -target 1.4 Main.java
我还可以成功compile呢,而最后导致我用1.4的jdk去执行发生错误...
请问有哪位大大知道原因吗,还是我的观念有错误...
谢谢回覆
使用 -source 1.4 switch 时,编译会限定只能使用 Java 1.4 (含)以前的语法,这跟你可以使用到哪些语法层面的 feature 有关,与能不能参考 core classes 里的哪些 class
作者: Duncan 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28