javac中 source 和 target选项是干什么用的,他们之间有什么关系吗?

dddlgbb 2007-11-20 07:56:05
如题
...全文
1079 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwchenbing 2010-02-07
  • 打赏
  • 举报
回复
我认为你的编译根本没有通过
1.5的源文件(包含了1.5的新功能)怎么可能使用1.4编译器编译通过呢?

你看见的编译通过,可能是由于多次编译,而没有CLEAN之前编译所残留的垃圾文件造成的
其实根本没有编译通过
seaforce 2007-11-23
  • 打赏
  • 举报
回复
跟.学习!!
百炼钢丶 2007-11-22
  • 打赏
  • 举报
回复

跟.学习!!
dddlgbb 2007-11-22
  • 打赏
  • 举报
回复
to ProvidenceZY :
.5下的代码需要在1.4下编译,什么意思 ?
我的例子中 s1.contains(s2);String的 contains方法 就是 1.5引入 的 ,但用
javac -source 1.4 -target 1.4 Test.java
也能编译通过,但实际上 不能在jdk1.4上运行,那说明-source 1.4 选项 没有把Test类编译成可以在jdk1.4下运行的字节码,即此选项 没有 起作用,可以这样理解吗?
dracularking 2007-11-22
  • 打赏
  • 举报
回复
运行时绑定?
iskyshop 2007-11-22
  • 打赏
  • 举报
回复
source 表示源文件的版本
target 表示编译时候的版本
比喻1.5下的代码需要在1.4下编译“
javac -source 1.5 target 1.4
had123 2007-11-22
  • 打赏
  • 举报
回复
joejoe1991 2007-11-22
  • 打赏
  • 举报
回复
不知道 学习。。
dddlgbb 2007-11-21
  • 打赏
  • 举报
回复
ding
dddlgbb 2007-11-20
  • 打赏
  • 举报
回复
问题是这样的

public class Test {
public static void main(String[] argv){
String s1="123";
String s2="12";
System.out.println(s1.contains(s2));
}
}
在jdk 1.5下
javac -source 1.4 -target 1.4 Test.java
能编译成功,但生成的class在jdk1.4下运行报错

Exception in thread "main" java.lang.NoSuchMethodError: java.lang.String.contain
s(Ljava/lang/CharSequence;)Z
at Test.main(Test.java:14)

因为String.contains(CharSequence)是在jdk1.5 引入的。

现在关键问题是我在编译的时候已经加了-source 1.4 -target 1.4 选项,javac怎么没有起作用,应该报错才对呀。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧