Java命令行

巧了我就是萌 提交于 2021-02-10 08:57:42

使用 Java.exe 和 Javac.exe 来运行和编译

几个重要的系统参数属性

  • java.library.path -- dll库
  • java.class.path -- jar和类库
  • user.dir -- 启动时的目录
  • file.encoding -- file
  • java.io.tmpdir -- temp文件
  • file.separator -- 文件分隔符
  • line.separator -- 换行符
  • sun.boot.class.path -- Bootstrap Jar
  • java.ext.dirs -- Extension Jar

动态参数

    -D 设置动态参数

    例:java -Dxx=yy ClassName //自定义多个参数需要多个 -D

    获取:

    System.getProperties().getProperty("xx");//yy

     

    注意:像java.library.path这些动态属性,虽然程序启动后可以动态改变,但是没办法改变其达到的功能。只能在程序启动时设置才能加载dll:

    java -Djava.library.path=D:\java\dlls MyTestClass

     

    -cp或-classpath 设置类和jar包路径

    例:java -cp .;d:\java\jarlib\* TestClass

    注意: 在linux系统是用:冒号分割而不是;分号    orz。

        .是当前路径*为通配符

     

    内存参数:

    -Xmx   Java Heap最大值,默认值为物理内存的1/4

    -Xms   Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值

    -Xmn   Java Heap Young区大小,不熟悉最好保留默认值;

    -Xss   每个线程的Stack大小,不熟悉最好保留默认值;

    java -Xmx128m -Xms64m -Xmn32m -Xss16m TestClass

     

    标准参数:

    -verbose:class         输出jvm载入类的相关信息

    -verbose:gc             输出每次GC的相关情况。

    -verbose:jni             输出dll的加载的相关情况

    -XX:-UseSerialGC     启动串行gc

    -XX:-UseParallelGC  启动并行gc

    -XX:NewRatio          新生代内存容量与老生代内存容量的比例

    -XX:SurvivorRatio    设置堆内存年轻代中Eden区与Survivor区大小的比值

    -XX:MaxPermSize=512M 设置持久代最大值为512M。

    -XX:MaxTenuringThreshold=7 表示一个对象如果在救助空间(Survivor区)移动7次还没有被回收就放入年老代。

     

    Jar包的解释

    jar包实际就是一个压缩包zip但是此压缩包中必须含有

    META-INF文件夹,在文件夹下应该有

    • MANIFEST.MF

            #可执行jar要有Main-Class

            Main-Class: s.NewJFrame

    编译和运行jar

    • java.library.path -- 指定的是dll等非java库
    • java.class.path -- 指定jar库

    jvm搜索类的方式和顺序为:Bootstrap,Extension,User。

    Bootstrap中的路径是jvm自带的jar或zip文件,

    Extension是位于JRE_HOME/lib/ext目录下的jar文件

    User搜索可以给定(它有默认值%PATH%)

     

    加载自己需要使用的jar包,需要修改java.class.path,这时需要给java启动添加参数-cp或-classpath

    javac -cp .;./mylib.jar s/WTF.java //编译    .表示当前目录

    java -cp .;./mylib.jar s.WTF //运行

    或者 用*包括所有

    java -cp .;./lib/* s.WTF

    1.加载DLL

    System.load() 参数为库文件的绝对路径

    System.loadLibrary()的参数必须是PATH中有的dll

     

    方法1:

    一般将dll打包到jar包后,运行时使用classloader把dll资源复制到临时目录:

    系统属性java.io.tmpdir获取跟

    系统属性file.separator连接后

    创建自己的文件夹xxlibxx

    再使用System.load()加载即可

     

    方法2:

    对于没有打包到Jar包的dll,需要使用java.exe的命令在运行时设置

    配置-Djava.library.path

    例:

    java  -Djava.library.path=D:\eclipse\workspace\JniTest\src\jni\;.;   s.HelloJni

     

    方法3:

    dll直接复制到PATH目录下

    再使用System.loadLibrary()加载

    ..

    标签
    易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
    该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!