zoukankan      html  css  js  c++  java
  • JAVA SE11环境变量配置(Windows)

    附上:03. 安装环境:Windows · IntelliJ IDEA Tutorial

    附上:使用调试功能进行 Java debug 

    附上:Linux(Deepin)下配置java8 - L141210113的专栏 - CSDN博客


    大事件:java se 下载都要登录了,所以建议个人开发者使用OpenJDK ,如果没有好好阅读条款,商用领域使用Oracle-JDK是有收律师函的成本的。

    OpenJDK官网:https://openjdk.java.net/ (注意GPL2协议)

    参考:

    Oracle 终于要向 Java 的非付费用户开枪了-怎么看? - jason的回答 - 知乎 

    https://zhuanlan.zhihu.com/p/47405189

    当然还有很多公司的开源JDK,如亚马逊https://github.com/corretto   ZULU:https://www.azul.com/downloads/zulu/   此外还有微软、阿里等等

    可替代JDK介绍: https://yq.aliyun.com/articles/645952


    导航:

    1. JAVA环境配置和测试
    2. 使用VSCode编译/调试JAVA
    3. 解决VSCode运行程序中文乱码问题(编码问题)
    4. 解决eclipse导入javax之类的包报错(Java9开始才有的特性)

      

    一、JAVA环境配置和测试

    JAVA SE官网下载并运行jdk-11.0.1_windows-x64_bin.exe

    配置环境变量示例(快捷键 WIN+Pause,笔记本可能要多按个Fn键)

    JAVA_HOME     C:Java JDK

    path       %JAVA_HOME%in  (如果这里不生效,就改为bin目录的完整路径)

    CLASSPATH    .;%JAVA_HOME%lib;

    其他一致
    CLASSPATH值
    .;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib	ools.jar;%JAVA_HOME%jrein
    附上JDK1.8环境变量

    类路径变量 共有两个值,其中点是为当前目录的意思

    附上LINUX Debian系操作系统:
    dpkg -i 安装包文件名.deb
    nano /etc/profile
    
    写在最后:
    


    # Oracle JDK11

    export JAVA_HOME="/usr/lib/jvm/jdk-11.0.2"
    export CLASSPATH=${JAVA_HOME}/lib
    export PATH=$PATH:${JAVA_HOME}/bin


    路径间用分号隔开,$PATH必须要写,不然会破坏系统变量。等号左右不能有空格,不然报错
    可以先在终端打export测试(就算打错了也只对当前终端窗口生效),确认无误就执行
    之所以不加当前目录作为CLASSPATH,是因为这是linux,全局变量挺危险的。单文件运行用
    java -d . 文件名
    也不麻烦吧

    source /etc/profile
    使变量文件在当前终端窗口生效,测试java -version成功的话就可以重启电脑让它永久生效了
    至于OpenJdk和OracleJdk冲突看这里:
    分析并解决Linux(Deepin)的自带OpenJdk和自己安装的OracleJdk新旧版本冲突问题
    
    

    命令行测试(javac中使用-d,以及javac / java中使用-cp介绍

    java -version
    javac

    HelloWorld.java

    /*
     *定義一個類文件,然後在螢幕上顯示 "Hello, World!"。
     */
    public class HelloWorld {
        public static void main( String[] args ) {
            System.out.println( "Hello, World!" );
        }
    }
    /* 這個類別文件的結束。 引用自https://zh.wikibooks.org/zh-hans/Java/HelloWorld*/

    然后在命令行下的当前目录输入:

    javac HelloWorld.java

    当然有些程式码内部存在中文字串,会导致编译失败,这时候需要输入包含参数的指令:

    javac -encoding utf-8 HelloWorld.java

    编译

    java HelloWorld

    (注意不是java HelloWorld.class,class文件是字节码文件,只是“中介”并不算可执行文件,但这个“中介”必不可少(这就是CLASSPATH里要有当前目录符号“.”的原因),)

    屏幕上就会显示

    Hello, World!

    附上带包运行的方法

    带包运行,
    定位到包目录所在目录
      java 包名.类名
    
    如D:	estHello.class
    包名test 类名Hello
    那么
      cd /d D:
      java test.Hello
    带包运行

     需要第三方依赖包的编译/运行命令,请看:

    命令行编译带外部包依赖的java源文件 [以JDBC为例]

     javac的参数 -d是用来生成包结构的,可指定编译后class的生成路径:

    javac *.java

    目录下有:

    a.java  a.class  b.java  b.class

    javac -d . *.java

    目录下有:

    a.java  b.java  a目录a.class  b目录.class

    不明白可以看这篇:https://zhuanlan.zhihu.com/p/36529847

    当然也可以暂时跳过



     

    资料参考:

    JDK 11 Documentation

    java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别

    JavaSE学习总结(一)——Java基础

     

    二、使用VSCode编译/调试JAVA

    推荐参考文章:VSCode搭建Java开发运行环境

    (上面这链接有 java插件配置文件的修改方法)

    如果没什么问题了,可以在VSCode上玩一下:

    VSCode打开java源文件所在目录,搜索安装 Java Extension Pack,然后直接F5会生成配置文本,保存后编译java文件即可

    如果提示

    Warn: Classpath is incomplete. Only syntax errors will be reported.
    请看这里,或者这里
    “Classpath不完整”警告
    Fred Bricon编辑了这个页面 on 27 Nov 2018 · 6次修订
    每当打开一个java文件时,它不属于项目(我们称之为独立的Java文件),vscode-java无法计算正确的类路径。它使报告编译错误变得毫无用处,因为UI会在整个文件中填充令人分心的红色错误,例如:
    
    
    幸运的是,vscode-java仍然能够为基本JDK类提供有用的内容辅助,报告语法错误,计算类大纲或允许代码导航。因此,显示以下警告:
    
    
    如果您只是关闭消息,它将在下次打开独立的Java文件时弹出。通过单击Don’t Show Again选项可以永久丢弃该消息。
    
    如果您改变主意,可以在VS Code的用户设置中修改该选项:该java.errors.incompleteClasspath.severity密钥指定当Java文件的类路径不完整时消息的严重性。支持的值是ignore,info,warning和error。
    
    您需要打开一个包含pom.xml,build.gradle或至少是默认eclipse设置文件的文件夹,以便可以设置完整的类路径和项目层次结构。
    官方说明

    另外如果不需要debug功能,可以直接使用Code Runner插件。



    fen ge xian


    三、解决VSCode运行程序中文乱码问题(编码问题)


    附上VSCode运行程序中文乱码解决方案(Java示例,C语言同理)

    (这里暂时以coderunner为例,实际上应该是可以在java插件里设置的)

    在VSCode设置搜索code-runner.executorMap

    然后从插件的默认配置复制粘贴到右边的用户配置,并进行修改

    添加了以下内容到中间

     "code-runner.runInTerminal": true,
        // Set the executor of each language.
        "code-runner.executorMap": {
            "java": "cd $dir && javac -encoding UTF-8 $fileName && java $fileNameWithoutExt",
            "c": "cd $dir && gcc -g -fexec-charset=GBK $fileName -o $fileNameWithoutExt -Wall -static-libgcc && $dir$fileNameWithoutExt"
        }

    我的用户配置是

     1 {
     2     "workbench.sideBar.location": "left",
     3     "terminal.integrated.shell.windows": "C:\WINDOWS\System32\cmd.exe",
     4     "files.autoGuessEncoding": true,
     5     
     6 
     7     //"terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"],
     8     //"terminal.integrated.fontFamily": "Lucida Console",
     9 
    10 
    11     "code-runner.runInTerminal": true,
    12     // Set the executor of each language.
    13     "code-runner.executorMap": {
    14         "java": "cd $dir && javac -encoding UTF-8 $fileName && java $fileNameWithoutExt",
    15         "c": "cd $dir && gcc -g -fexec-charset=GBK $fileName -o $fileNameWithoutExt -Wall -static-libgcc && $dir$fileNameWithoutExt"
    16     }
    17 }
    settings.json

     然后用code runner插件运行即可,调试的就没办法避免中文乱码了(只能等VSCode官方解决)。

    四,解决eclipse导入javax之类的包报错(Java9开始才有的特性)

    详情:JDK8过渡到JDK11

    例如导入包提示错误:

    The import javax.sound cannot be resolved midi.java /Test/src/com/test/demo line 2 Java Problem

    这种问题并不是环境变量设置不对,而且JAVA9带来的新特性。

    解决方案:只需要两步点击搞定

    点击代码行号那里的×,会弹出对话框,然后点两下Add 'requires ' to module-info.java即可

     然后就会看一下module-info.java,会发现多了一行requires

    注:javax.sound是属于java.desktop的

    这是Java9带来的特性,至于为什么,我还在寻找答案中....

    附上:Eclipse断点调试(debug)实用技巧——基础篇_百度经验




    最后,推荐书籍(看实体书或PDF都行):
    1,Head First Java(中文版)
    2,Java 核心技术卷一
    --------蓝天上的云_转载请注明出处.
  • 相关阅读:
    164.Maximum Gap
    163.Missing Ranges
    162.Find Peak Element
    161.One Edit Distance
    160.Intersection of Two Linked Lists
    7.5爬取猫眼Top100电影名单
    7.5文件操作
    7.4文件操作(1)
    7.4一个失败的网易云爬虫,
    7.3数据结构(1)
  • 原文地址:https://www.cnblogs.com/yucloud/p/10259681.html
Copyright © 2011-2022 走看看