Java知识点01

本文记录一下与Java相关的一些知识点:

属性和方法签名

参考资料:

  1. 关于属性与方法的签名

IDEA将 Java 项目打包成 Jar 包

参考资料:

  1. IDEA 将普通 Java 项目打包成 Jar 包并运行

exe4j将jar包转换为可执行文件

参考资料:

  1. exe4j安装及注册
  2. idea打包java项目成exe可执行文件

从pom.xml导入项目

参考资料:

  1. Lab 2 Setup: Library Setup

JUnit debugging

参考资料:

  1. Lab3: Unit Testing with JUnit, Debugging

IntelliJ IDEA使用Java visualizer可视化

参考资料:

  1. Java Visualizer Tutorial

java 错误,不支持发行版本5

参考资料:

  1. Error java 错误 不支持发行版本5 ( 完美解决版)

Java内存使用评估

参考资料:

  1. How to calculate the memory usage of Java objects
  2. Memory Usage Estimation in Java

多个模块之间的依赖

有时一个项目可能包含多个模块,在想要在一个模块中引用另一个模块的类或方法时,会发现IDEA并没有弹出提示,其原因为另一个模块中的类或方法没有声明为public

Error running ‘Remote Debugger’

使用Remote JVM Debug时,运行debug出现:

参考资料:

  1. Error running ‘Remote Debugger’: Unable to open debugger port (localhost:5005): java.net.ConnectException “Connection refused (Connection refused)”

javac编译详解

参考资料:

  1. 第1期:抛开IDE,了解一下javac如何编译

Java外部包配置

有两种方式:

  • 在IDEA Project Structure里配置
  • 在环境变量里配置CLASSPATH,可能需要重启后生效(无效,似乎IDEA不会自动导入CLASSPATH变量)。

参考资料:

  1. Algorithms, 4th Edition(算法-第四版)源码使用系统配置
  2. Java Algorithms and Clients

出现ClassNotFoundException

原因:未将所依赖的jar包配置到CLASSPATH环境变量
解决方案:

  • 临时生效:java -cp .;D:\\Develop\\Java\\jdk11.0.11\\lib\\algs4.jar BinarySearch largeW.txt < largeT.txt
  • 永久生效:在CLASSPATH中添加.;D:\\Develop\\Java\\jdk11.0.11\\lib\\algs4.jar.表示将当前目录加入class path的检索路径。

参考资料:

  1. Java.lang.classnotfoundexception - HelloWorld.class [duplicate]
  2. What does “Could not find or load main class” mean?
  3. PATH and CLASSPATH
  4. Java Algorithms and Clients

出现乱码

当直接使用javac Evaluate.java编译文件时出现以下乱码:

此时可以通过指定编码格式解决该问题:

javac -encoding utf8 p3/Evaluate.java

参考资料:

  1. Javac和JVM的字符编码问题

Linux下编译和运行Java引用多个外部包

以算法第四版第三章的3.1.3的用例举例为例进行说明。在windows中已经根据上述的出现ClassNotFoundException进行外部库的依赖配置。
此时在windows中只需在cmd窗口按照以下步骤运行用例类:

  • javac p1/TestST.java:编译生成TestST.class文件
  • java p1/TestST <tinyTale.txt:将tinyTale.txt文件作为标准输入运行
    PS:
  1. 由于cmd极弱的自动补全,每次运行都需要手敲完整文件名,很难受
  2. powershell虽然有适当的自动补全,但在命令行窗口中<符号不能作为标准输入的重定向符。
    因此,对在WSL的Linux系统中编译和运行java文件的需求应运而生。
    其步骤如下:首先确保在WSL系统中已经安装好java环境,javacjava可正常运行。
  • javac -cp "/mnt/d/Develop/Java/jdk11.0.11/lib/*" p1/TestST.java/mnt/d/Develop/Java/jdk11.0.11/lib/*为外部库所在路径,其中包含algs.jar这个外部依赖库。
  • java -cp $CLASSPATH:"/mnt/d/Develop/Java/jdk11.0.11/lib/*" p1.TestST <p1/tinyTale.txt:运行.class文件。
    为了避免上述命令中繁琐的输入,可以设置alias别名:
alias javac="javac -cp '/mnt/d/Develop/Java/jdk11.0.11/lib/*'"
alias java="java -cp $CLASSPATH:/mnt/d/Develop/Java/jdk11.0.11/lib/*"

参考资料:

  1. linux 下编译和运行 java 引用多个外部包
  2. linux alias 命令 查看系统设置的命令别名

Ubuntu上安装Java

参考资料:

  1. 如何在Ubuntu 18.04上安装Java(JDK11)

Java中的HashMap、TreeMap和HashSet、TreeSet

参考资料:

  1. 哈希表和有序表的简单介绍 - 掘金
  2. Map的有序和无序实现类,与Map的排序 - 龙昊雪 - 博客园
  3. Java HashSet | 菜鸟教程
  4. Java TreeSet - Java教程 - 菜鸟教程
  5. Java HashMap | 菜鸟教程
  6. Java TreeMap - Java教程 - 菜鸟教程

Java中溢出处理

参考资料:

  1. java int溢出总结 | njuCZ’s blog

Java中ArrayList

参考资料:

  1. Java ArrayList | 菜鸟教程

Java中位操作

参考资料:

  1. java中的位操作、移位操作_51CTO博客_java移位操作

Java数据类型

参考资料:

  1. Java 基本数据类型 | 菜鸟教程

使用gradle时卡在80% building :bootRun

正常情况

参考资料:

  1. [Gets stuck at > Building 80% > :bootRun · Issue #3 · hamvocke/spring-testing · GitHub](https://github.com/hamvocke/spring-testing/issues/3
  2. java - Why does my Spring Boot web app not run completely in Gradle? - Stack Overflow