首页 > 其他分享 >关于 CLASSPATH 和 -classpath 和 -cp

关于 CLASSPATH 和 -classpath 和 -cp

时间:2022-10-18 11:33:16浏览次数:36  
标签:java javac classpath CLASSPATH Two cp public

1. 作用

作用: 指定 java-解释器、javac-编译器 查找 .class或.java 文件的位置(可以是 目录、jar、zip)
    多个目录时,用 : 分割

2. 区别

区别: -classpath 和 -cp 相同
        是 javac、java 命令的参数

     CLASSPATH 为环境变量
     如果配置了 CLASSPATH,启动 javac、java是会默认使用 CLASSPATH
     如果使用参数时 -classpath=path:CLASSPATH

     示例: export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/usr/local/lib/antlr-4.0-complete.jar

3. 示例: 编译时 java源文件中 引用了其他的类

1. 在 /root/up 下 创建 One.java

    // 引用了 外部类 Two
    public class One {
        public static void main(String[] args) {
            new Two().show();
            System.out.println("One启动了");
        }
    }

2. 在 /home/software 下 创建 Two.java

    public class Two {

        public void Two(){
            System.out.println("Two启动了");
    }   

     public void show(){
            System.out.println("Two启动了");

    }

        public static void main(String[] args) {
            System.out.println("Two启动了");
        }
    }

3. 编译 One.java
    javac One.java

    One.java:3: 错误: 找不到符号
            new Two().show();
                ^
      符号:   类 Two
      位置: 类 One
    1 个错误

分析: 无法找到 引用 Two的java文件在哪里 

3.1 编译 One.java 指定 -cp 
javac -cp /home/software One.java

3.2 编译 One.java 指定 环境变量 CLASSPATH
export CLASSPATH=.:/home/software
javac One.java

4.示例 运行 一个引用了外部类的类

1. 运行 java One 
Exception in thread "main" java.lang.NoClassDefFoundError: Two
        at One.main(One.java:3)
Caused by: java.lang.ClassNotFoundException: Two
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 1 more

分析: 无法找到 Two.class 

2. 运行 java One 指定 -cp (指定 Two.class 所在的目录 和 One.class 所在的目录)
java -cp /home/software:./ One 

3. 运行 java One 指定 环境变量 CLASSPATH
export CLASSPATH=.:/home/software
java One

 

 

 

标签:java,javac,classpath,CLASSPATH,Two,cp,public
From: https://www.cnblogs.com/bajiaotai/p/16802040.html

相关文章

  • C#操作CPU内存时 winIO32位,64位的使用(运行时要用管理员身份)注意事项
    一、WinIo说明WinIO程序库允许在32位的Windows应用程序中直接对I/O端口和物理内存进行存取操作。通过使用一种内核模式的设备驱动器和其它几种底层编程技巧,它绕过了Wi......
  • 生产系统CPU飙高问题排查
    现状生产系统CPU占用过高,并且进行了报警排查方法执行top命令,查看是那个进程导致的,可以确定是pid为22168的java应用导致的执行top-Hp命令,查看这个进程的那个线程导致......
  • Eclipse插件开发自定义Classpath
    介绍我们在使用Eclipse做Java开发的时候,如果要用到JDK以外的库文件的话,一般的做法都是自定义一个Library或者逐个添加jar文件,或者是利用Maven。那么,Maven又是怎么做到的呢?......
  • 2020icpc济南 - A
    组合数学+高斯消元[A-MatrixEquation_第45届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)(nowcoder.com)](https://codeforces.com/problemset/problem/1632/D)题意......
  • CPU飙高问题排查,从linux到java代码
    第一步:top监测进程资源占用情况,获取异常进程编号。这一步可以获得异常占用进程号。第二步:psH-eopid,tid,%cpu|grepxxxx  H打印线程以及进程信息,-eo打印指定的字......
  • k8s限制cpu和内存的策略
    1.概要最近发现一个服务cpu占用了100%,导致整个服务器崩溃的悲剧,我就想k8s如何能够限制cpu/内存等的时候了。研究了一下发现还真的可以,这篇做个记录2.POD级别2.1.配置d......
  • 2019-2020 ACM-ICPC Latin American Regional Programming Contest F
    https://codeforces.com/gym/102428首先,令\(dp[i][j]\)表示最下层的有\(i\)块,包括最下层总共还有\(j\)块的方案数容易想到状态方程:$dp[i][j]=\sum_{k=1}^i......
  • IDEA运行大型项目,项目启动卡顿,CPU使用率占用过高
    近期,在启动一个大型项目时,启动到一半,一直卡起不动,经过研究发现,是由于启动时内存不够导致。 1、点击文件(File)->设置(settings  ) ->构建、执行部署(Build,Execution.......
  • 人为提升服务器CPU、内存、硬盘使用率
    一、CPU使用率vikyd/go-cpu-load:GenerateCPUloadonWindows/Linux/Mac(github.com)所有CPU核心负载30%运行10秒钟./cpu-p30-t10所有CPU核心负载30%持续运......
  • DHCP
    视频:https://www.bilibili.com/video/BV1dv41187jb/?spm_id_from=333.337.search-card.all.click&vd_source=3bdaecff10bd344788cc194461374709介绍  组成  报......