V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
joshryo
V2EX  ›  Java

IntelliJ IDEA 使用 JDK 编译出现警告

  •  
  •   joshryo · 2015-04-02 23:21:06 +08:00 · 5752 次点击
    这是一个创建于 3313 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近转用IntelliJ IDEA进行开发,因为各种原因,在机器上安装了从1.5~1.8版本的JDK。
    公司的项目一般使用JDK1.5开发维护,但是在编译过程中会出现如下提示:

    Information:Using javac 1.8.0_40 to compile java sources
    Information:4/2/2015 11:04 PM - Compilation completed successfully with 3 warnings in 2s 32ms
    Warning:java: source value 1.5 is obsolete and will be removed in a future release
    Warning:java: target value 1.5 is obsolete and will be removed in a future release
    Warning:java: To suppress warnings about obsolete options, use -Xlint:-options.

    变成使用JDK1.8编译了。
    如果改用JDK1.6就一切正常,难道IntelliJ IDEA现在已经不支持JDK1.5编译了么?

    第 1 条附言  ·  2015-04-03 15:21:14 +08:00
    出现问题的原因是当项目/模块/目标字节码指定成1.5以后,会使用运行IDEA所配置的JDK版本进行编译(可在Help->About查看),而配置成非1.5版本,则会使用指定的JDK编译。具体原因不清楚,也有可能是我1.5的JDK有问题?(不过Eclipse倒是没这问题)
    8 条回复    2015-04-29 12:25:12 +08:00
    SoloCompany
        1
    SoloCompany  
       2015-04-03 00:19:11 +08:00
    这和 IDEA 没关系,这个英文不难懂吧?是 java 8 告诉你说 1.5 (包括)之前的兼容编译开关很快就会不支持了,让你尽快升级你的编译参数到1.6以上,是否有兼容问题就要你自己验证了
    FrankFang128
        2
    FrankFang128  
       2015-04-03 00:27:51 +08:00
    管不得用 1.5
    FrankFang128
        3
    FrankFang128  
       2015-04-03 00:28:00 +08:00
    怪不得用 1.5
    joshryo
        4
    joshryo  
    OP
       2015-04-03 00:43:58 +08:00
    @SoloCompany 我模块本身用的是1.5,编译的项目字节码也是指定1.5,为何1.8要跳出来提示?这才是我纳闷的地方,同样环境配置Eclipse下面就可以依照指定的JDK进行编译。
    @FrankFang128 这不是怪用不用的问题,我也想用7,8,甲方生产上用着5,我弄个7,8编译过去这不明显着看UnsupportedClassVersion出来抽脸么。况且环境上的问题,甲方一句“咱就用这个!”枉费你若干口舌。
    SoloCompany
        5
    SoloCompany  
       2015-04-03 00:56:13 +08:00
    @joshryo 你需要补习一下 java 基本知识
    SoloCompany
        6
    SoloCompany  
       2015-04-03 00:59:24 +08:00
    另外我猜你是没配对项目的 JDK 或者模块的 JDK,你可能以为自己配置了项目的 JDK 是 1.5 但实际确是 1.8,注意搞清楚 JDK 版本(就是你使用那个编译器)和你的代码目标版本(就是 javac 的 source 和 target 参数)的区别,你大概不是搞混了吧
    joshryo
        7
    joshryo  
    OP
       2015-04-03 04:41:45 +08:00
    @SoloCompany 谢谢你的提醒,正是因为这样我才发了这个问题,我同样只是修改了模块/项目JDK为1.6,编译字节码指定为1.6。编译出现的提示信息类似如下:

    Information:Using javac 1.6.0_45 to compile java sources
    Information:4/2/2015 11:04 PM - Compilation completed successfully in 2s 32ms

    如此,1.7,1.8 都可以按照我指定的JDK版本编译
    一旦指定1.5,就会出现使用1.8.0_40编译,然后三条警告1.5参数已经被废弃啦,马上就要被删除啦,balabala...
    unionx
        8
    unionx  
       2015-04-29 12:25:12 +08:00
    你应该用 maven-compiler-plugin 来指定 JDK 和 JRE 的版本
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5447 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:57 · PVG 15:57 · LAX 00:57 · JFK 03:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.