java重新入坑
毕业八年了,从毕业后就没有写过java代码,仅平常看看android相关的资讯和博客及时不时编译下Android工程,以前学过的java早忘光了。
最近因工作需要要重新学习下java,结果上来就踩一坑。
第一坑
更新于:2016-07-06
很简单一事,随便抄了个Property.java
,想着怎么执行呢,按着python、lua、php、nodejs
类型的方式java Property.java
,呕妹糕,找不到或无法加载主类 Property.java
。
查询网站,原谅我已经忘记了命令行执行java程序是需要先编译一下下的,找到javac.exe
执行后生成了Property.class
,然后java Propery
,又报错找不到或无法加载主类 Property
。
why?why?都有class了还不给执行?查访网络后发现虽然我机器上被各种情况装了各种java环境,可是PATH和CLASS_PATH都没有正确的被设置。
添加环境变量CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
及PATH=%PATH%;.;%JAVA_HOME%\bin;
后再执行,终于正常了。
jar中没有主清单属性
ref: http://jingyan.baidu.com/article/db55b60990f6084ba30a2fb8.html
验证一个java特性instrument时,将代码打包成jar包,在manifest.md
里只使用了Premain-Class
属性。但是在随后尝试直接启动时,未添加Main-Class
属性。
第二坑
windows上正常的java程序,放到linux上编译失败。报错error: unmappable character for encoding ASCII
原因是windows上默认编码是我中文系统的gbk编码,而linux上出现编码不一致时需要在命令行中指定:
1 | 编译时:javac -encoding gbk test.java |
当然,编码视不同情况可指定为utf-8等其它编码。
如果编码统一,则可以在环境变量中指定export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
,如果在在~/.bashrc文件里添加,就不用每次手动再改了!
第三坑 Could not reserve enough space
2017-01-11更新
编译某一项目时,该项目编译时提示错误:
1 | Error:Unable to start the daemon process. |
是因为gradle.properties
中有一行org.gradle.jvmargs=-Xmx2560m -XX:MaxPermSize=1024m
,导致构建时java.exe报错。
直接使用命令行java -Xmx(n)M -version
测试,发现在我的机器上最大只能到java -Xmx1256M -version
,再研究研究,发现这是个32位的java,换用 64位jdk解决之。