Java知识点01
本文记录一下与Java相关的一些知识点:
属性和方法签名
参考资料:
IDEA将 Java 项目打包成 Jar 包
参考资料:
exe4j将jar包转换为可执行文件
参考资料:
从pom.xml导入项目
参考资料:
JUnit debugging
参考资料:
IntelliJ IDEA使用Java visualizer可视化
参考资料:
java 错误,不支持发行版本5
参考资料:
Java内存使用评估
参考资料:
多个模块之间的依赖
有时一个项目可能包含多个模块,在想要在一个模块中引用另一个模块的类或方法时,会发现IDEA并没有弹出提示,其原因为另一个模块中的类或方法没有声明为public
。
Error running ‘Remote Debugger’
使用Remote JVM Debug时,运行debug出现:
参考资料:
javac编译详解
参考资料:
Java外部包配置
有两种方式:
- 在IDEA Project Structure里配置
- 在环境变量里配置
CLASSPATH
,可能需要重启后生效(无效,似乎IDEA不会自动导入CLASSPATH
变量)。
参考资料:
出现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的检索路径。
参考资料:
出现乱码
当直接使用javac Evaluate.java
编译文件时出现以下乱码:
此时可以通过指定编码格式解决该问题:
javac -encoding utf8 p3/Evaluate.java
参考资料:
Linux下编译和运行Java引用多个外部包
以算法第四版第三章的3.1.3的用例举例为例进行说明。在windows中已经根据上述的出现ClassNotFoundException进行外部库的依赖配置。
此时在windows中只需在cmd窗口按照以下步骤运行用例类:
javac p1/TestST.java
:编译生成TestST.class
文件java p1/TestST <tinyTale.txt
:将tinyTale.txt
文件作为标准输入运行
PS:
- 由于cmd极弱的自动补全,每次运行都需要手敲完整文件名,很难受
- powershell虽然有适当的自动补全,但在命令行窗口中
<
符号不能作为标准输入的重定向符。
因此,对在WSL的Linux系统中编译和运行java文件的需求应运而生。
其步骤如下:首先确保在WSL系统中已经安装好java环境,javac
和java
可正常运行。
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/*"
参考资料:
Ubuntu上安装Java
参考资料:
Java中的HashMap、TreeMap和HashSet、TreeSet
参考资料:
Java中溢出处理
参考资料:
Java中ArrayList
参考资料:
Java中位操作
参考资料:
Java数据类型
参考资料:
使用gradle时卡在80% building :bootRun
正常情况
参考资料:
- [Gets stuck at > Building 80% > :bootRun · Issue #3 · hamvocke/spring-testing · GitHub](https://github.com/hamvocke/spring-testing/issues/3
- java - Why does my Spring Boot web app not run completely in Gradle? - Stack Overflow