【linux 学习】vim编译运行java工程HelloWord(linux mint)

首先建立java的目录结构,按照eclipse那种管理方式:

zsl@zsl-pc ~/Project/helloword $ tree
.
├── bin
│   ├── dosth
│   └── hello
├── lib
└── src
    ├── dosth
    │   └── Say.java
    └── hello
        └── Hello.java

7 directories, 2 files
    bin 存放编译的 class 文件

    src 存放所有的 java 文件

    lib  存放所有的第三方 jar 包

Say.java

package dosth;
public class Say{
        public void say(){
                System.out.println("helloword!");
        }
}

Hello.java

package hello;
import dosth.Say;
public class Hello{
        public static void main(String arg[]){
                Say say = new Say();
                say.say();
                System.out.println("hello!!");
        }
}



【javac编译】

zsl@zsl-pc ~/Project/helloword $ javac -cp  lib:bin -Djava.ext.dirs=lib -d bin src/hello/*
src/hello/Hello.java:2: 错误: 程序包dosth不存在
import dosth.Say;
            ^
src/hello/Hello.java:5: 错误: 找不到符号
        Say say = new Say();
        ^
  符号:Say
  位置:Hello
src/hello/Hello.java:5: 错误: 找不到符号
        Say say = new Say();
                      ^
  符号:Say
  位置:Hello
3 个错误
zsl@zsl-pc ~/Project/helloword $ javac -cp  lib:bin -Djava.ext.dirs=lib -d bin src/dosth/*
zsl@zsl-pc ~/Project/helloword $ javac -cp  lib:bin -Djava.ext.dirs=lib -d bin src/hello/*

第一次编译出错,是因为Say类还未加载。

使用的系统是 Ubuntu ,目录之间使用的是 :冒号隔开,如果是 windows ,替换为 ; 分号

【 -cp lib:bin 】编译过程中需要引入 class 所在的文件夹的路径
【-Djava.ext.dirs=lib】引入的第三方 jar 包存放的目录,如有引用第三方 jar 包编译时会通过此参数到相应的路径下查找
【-d bin src/hello/】指的是把【src/hello/】编译好放到【bin】下会自动匹配到对应目录下

编译后的目录结构:

.
├── bin
│   ├── dosth
│   │   └── Say.class
│   └── hello
│       └── Hello.class
├── lib
└── src
    ├── dosth
    │   └── Say.java
    └── hello
        └── Hello.java

多了两个class



【java运行】

zsl@zsl-pc ~/Project/helloword $ java -cp bin -Djava.ext.dirs=lib hello.Hello

【 -cp lib:bin 】编译过程中需要引入 class 所在的文件夹的路径
【-Djava.ext.dirs=lib】引入的第三方 jar 包存放的目录,如有引用第三方 jar 包编译时会通过此参数到相应的路径下查找
【hello.Hello】要写全报名。

【注意】此处的许多地方和路径有关,自行调整

你可能感兴趣的:(linux学习)