1.关于-classpath,-cp
虚拟机在运行一个类时,需要将其装入内存,虚拟机搜索类的方式和顺序如下:
Bootstrap classes --> Extension classes --> User classes。
Bootstrap 中的路径是虚拟机自带的jar或zip文件,虚拟机首先搜索这些包文件,用System.getProperty("sun.boot.class.path")可得到虚拟机搜索的包名。
Extension是位于jre"lib"ext目录下的jar文件,虚拟机在搜索完Bootstrap后就搜索该目录下的jar文件。用System. getProperty("java.ext.dirs”)可得到虚拟机使用Extension搜索路径。
User classes搜索顺序为当前目录、环境变量 CLASSPATH、-classpath。
2. -classpath的使用
告知虚拟机搜索目录名、jar文档名、zip文档名,之间用分号;分隔。
例如当你自己开发了公共类并包装成一个common.jar包,在使用 common.jar中的类时,就需要用-classpath common.jar 告诉虚拟机从common.jar中查找该类,否则虚拟机就会抛出java.lang.NoClassDefFoundError异常,表明未找到类定义。
在运行时可用System.getProperty(“java.class.path”)得到虚拟机查找类的路径。
使用-classpath后虚拟机将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则虚拟机使用当前路径(.)作为类搜索路径。
推荐使用-classpath来定义虚拟机要搜索的类路径,而不要使用环境变量 CLASSPATH的搜索路径,以减少多个项目同时使用CLASSPATH时存在的潜在冲突。例如应用1要使用a1.0.jar中的类G,应用2要使用 a2.0.jar中的类G,a2.0.jar是a1.0.jar的升级包,当a1.0.jar,a2.0.jar都在CLASSPATH中,虚拟机搜索到第一个包中的类G时就停止搜索,如果应用1应用2的虚拟机都从CLASSPATH中搜索,就会有一个应用得不到正确版本的类G。
3.运行class文件
执行带main方法的class文件,命令行为:
java <CLASS文件名>
注意:CLASS文件名不要带文件后缀.class
例如:
java Test
如果执行的class文件是带包的,即在类文件中使用了:
package <包名>
那应该在包的基路径下执行,命令行为:
java <包名>.CLASS文件名
例如:
PackageTest.java中,其包名为:com.ee2ee.test,对应的语句为:
package com.ee2ee.test;
PackageTest.java及编译后的class文件PackageTest.class的存放目录如下:
classes
|__com
|__ee2ee
|__test
|__PackageTest.java
|__PackageTest.class
要运行PackageTest.class,应在classes目录下执行:
java com.ee2ee.test.PackageTest
4. 运行jar文件中的class
原理和运行class文件一样,只需加上参数-cp <jar文件名>即可。
例如:执行test.jar中的类com.ee2ee.test.PackageTest,命令行如下:
java -cp test.jar com.ee2ee.test.PackageTest
5.显示jdk版本信息
当一台机器上有多个jdk版本时,需要知道当前使用的是那个版本的jdk,使用参数-version即可知道其版本,命令行为:
java -version
6. 增加虚拟机可以使用的最大内存
java虚拟机可使用的最大内存是有限制的,缺省值通常为64MB或128MB。
如果一个应用程序为了提高性能而把数据加载内存中而占用较大的内存,比如超过了默认的最大值128MB,需要加大java虚拟机可使用的最大内存,否则会出现Out of Memory(系统内存不足)的异常。启动java时,需要使用如下两个参数:
-Xms java虚拟机初始化时使用的内存大小
-Xmx java虚拟机可以使用的最大内存
以上两个参数中设置的size,可以带单位,例如:256m表示256MB
举例说明:
java -Xms128m -Xmx256m ...
表示java虚拟机初始化时使用的内存为128MB,可使用的最大内存为256MB。
对于tomcat,可以修改其脚本catalina.sh(unix平台)或catalina.bat(windows平台),设置变量JAVA_OPTS即可,例如:
JAVA_OPTS='-Xms128m -Xmx256m'
在控制台输出信息中,有个-X(注意是大写)的命令,这个正是查看JVM配置参数的命令。
分享到:
相关推荐
Java 命令行 用户管理系统 系统主要功能: ①添加用户: 命令是:add 用户名 年龄 性别 工资 例:add 张三 25 男 3000.00 ②更新用户: 命令是:update id:编号 name=用户名[age=年龄][gender=性别][salary=工资] 例...
自己写的简易Java命令行交互界面框架,可实现交互shell所具有的基本功能(没有历史记录功能),使用properties文件作为配置文件,利用反射实现命令的解析与向各个命令处理类的分发,使用简单,可作为各类Java小工程...
java命令行编译说明
Java命令行运行参数说明大全.txt
超级简单的JAVA命令行计算器,能够实现连续计算加减乘除,输入Q退出程序,输入C清空内容。
java小程序编译和运行。 批处理……
这是用java写的给予命令行的文件管理器,可以在命令行实现文件的创建、删除,重命名、拷贝,打开路径、压缩解压、加密解密等功能,可以说功能的是实现比较全面。
java命令行编译说明
NULL 博文链接:https://foreversky12.iteye.com/blog/2325785
Java 命令行解析器 JOpt Simple.7z
Java 命令行解析器 JOpt Simple
java命令行官方文档 请参考
Java 命令行实现的一个ATM服务模拟,用于实现小型毕业设计或者网络课程作业。
java源码:Java 命令行解析器 JOpt Simple.zip
Java 命令行解析器 JOpt Simple源码示例
这是一系列的bat脚本,用于快速创建C、C++和JAVA命令行编译与运行环境。bat脚本自身并不能执行编译,必须依赖对应的编译套件。相对于庞大的IDE来说,命令行方式要轻快得多,非常适合教学与验证一些算法。
Java 命令行程序案例,实现通讯录功能。通过控制台的菜单,实现数据增删查改。 学生可以通过这个案例掌握循环、分支、命令行输入输出等基本的编程技能。讲解视频地址:...
用java写的命令行下的五子棋代码和一个清屏的动态链接库,在五子棋代码里通过jni调用来实现清屏。 五子棋算法是参考的这个博客http://blog.163.com/liuliang_nice/blog/static/10274620200741201527290/ 文章提到的...