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

Java 专栏收录该内容
2 篇文章 0 订阅

今天学习了如何在linux系统上编译Java代码,特转载一篇关于带包的java程序编译运行方法,方便后续复习使用

一、编译单独一个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

补充:

一个包的文件都在时运行如下命令进行编译:
javac -d . *.java

运行:编译之后会自己生成文件夹,不要进入这个文件夹,直接运行 java -cp /home/test test.Test,其中源文件在 test 文件夹中,包名为 test,启动文件为 Test.java

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

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

抵扣说明:

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

余额充值