Linux下编译Java代码---javac和java命令的使用

java 专栏收录该内容
1 篇文章 0 订阅

一、编译单独一个java程序

Hello.java

public class Hello{
    public static void main(String args[]){
        System.out.println("Hello World!");
    }
} 


xl@ubuntu:~/java$ javac Hello.java        //在当前目录下产生Hello.class文件

xl@ubuntu:~/java$ ls
Hello.class  Hello.java
xl@ubuntu:~/java$ java Hello            // 执行Hello.class
Hello World!


二、编译一个带包的java程序

Hello.java

package hello.world;
public class Hello{
    public static void main(String args[]){
        System.out.println("Hello World!");
    }
}


xl@ubuntu:~/java$ javac Hello.java              //  在当前目录下产生Hello.class文件

xl@ubuntu:~/java$ ls
Hello.class  Hello.java

xl@ubuntu:~/java$ java Hello                      // 在执行的时候显示找不到Hello这个类,原因是因为程序中包含包hello.world,执行类的时候回去按照这个包的路径来找。因此我们用下面的命令来执行。
Error: Could not find or load main class Hello

xl@ubuntu:~/java$ javac -d . Hello.java       //  参数-d 指定生成class文件的位置
xl@ubuntu:~/java$ ls                                    // 此时我们看到在当前目录下生成了一个目录hello/world/        
hello  Hello.java
xl@ubuntu:~/java$ tree hello/ 
hello/
└── world
    └── Hello.class
1 directory, 1 file

xl@ubuntu:~/java$ java hello.world.Hello   // 执行类的时候需要带上路径
Hello World!


三、同一个包下,一个类调用另一个类

Lance.java 

package hello.world;
public class Lance{
    public String getName(){
        return "my name is lance";
    }
}
Introduce.java

package hello.world;
import hello.world.Lance;

public class Introduce{
    public static void main(String args[]){
        Lance name = new Lance();
        System.out.println("hello world! " + name.getName());
    }
}


xl@ubuntu:~/java$ javac -d . Lance.java                // 参数-d . 表示在当前目录下产生hello/world/目录。并且生成Lance.class
xl@ubuntu:~/java$ javac -cp . -d . Introduce.java   //  参数-cp . 表示按照 hello.world.Lance的路径寻找类,并且编译Introduce.java。此时在当前目录下产生hello/world/目录,并且生成Introduce.class

xl@ubuntu:~/java$ tree hello/
hello/
└── world
    ├── Introduce.class
    └── Lance.class

1 directory, 2 files
xl@ubuntu:~/java$ java hello.world.Introduce 
hello world! my name is lance


四、一个包下的类调用另一个包下的类

Lance.java 

package hello.world01;
public class Lance{
    public String getName(){
        return "my name is lance";
    }
}
Introduce.java

package hello.world02;
import hello.world01.Lance;

public class Introduce{
    public static void main(String args[]){
        Lance name = new Lance();
        System.out.println("hello world! " + name.getName());
    }
}

xl@ubuntu:~/java$ javac -d . Lance.java    // 参数-d . 表示在当前目录下产生 hello/world01/目录。并且生成 Lance.class
xl@ubuntu:~/java$ javac -cp . -d . Introduce.java   //  参数-cp . 表示按照 hello.world01.Lance的路径寻找类,并且编译Introduce.java。此时在当前目录下产生hello/world02/目录,并且生成Introduce.class
xl@ubuntu:~/java$ tree hello/
hello/
├── world01
│   └── Lance.class
└── world02
    └── Introduce.class


2 directories, 2 files
xl@ubuntu:~/java$ java hello.world02.Introduce  // 执行Introduce类的时候需要指定路径
hello world! my name is lance



参考

http://blog.csdn.net/wen294299195/article/details/39964971


  • 3
    点赞
  • 0
    评论
  • 8
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值