java 命令行编译执行程序_java 命令行 编译 执行程序

学习java使用IDE前最好先用用命令行的javac、java来跑一跑简单的程序,这样可以熟悉一下包管理对.class文件路径的影响。

我们先写一段简单的代码:

package com.csdn.lkasdolka;

public class test_1{

public static void main(String[] args){

for(int i = 0; i < 10; ++i ){

System.out.println(i);

}

}

}

写好后保存为test_1.java,windows环境下WIN+R打开命令行,cd到test_1.java文件目录下。

用命令

javac test_1.java

编译文件,如果之前java环境都配置好了的话,这时候在命令行中输入dir我们可以看到目录下多了一个test_1.class文件:

2014/10/06 16:23

2014/10/06 16:23

2014/10/06 16:23 454 test_1.class

2014/10/06 16:09 173 test_1.java

2 个文件 627 字节

2 个目录 13,711,450,112 可用字节

接下来用

java test_1

尝试运行字节码文件,却出现了异常。

Exception in thread "main" java.lang.NoClassDefFoundError: test_1 (wrong name: c

n/bupt/d10_1006_1/test_1)

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14

2)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

at java.net.URLClassLoader.access$100(URLClassLoader.java:71)

at java.net.URLClassLoader$1.run(URLClassLoader.java:361)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)这是因为我们在代码开头的地方建立了一个

com.csdn.lkasdolka的包。包是java当中用于管理命名空间的一种机制。我们需要在当前文件夹中手动建立com\csdn\lkasdolka,然后把test_1.class剪切到com\csdn\lkasdolka\目录下。

这时候再cd回最初的工作目录(com的父目录),在命令行输入

java com.csdn.lkasdolka.test_1或者

java com/csdn/lkasdolka/test_1应该就能看到正确的输出结果了:

C:\Users\acer\Desktop\technology\test_java>java com.csdn.lkasdolka.test_1

0

1

2

3

4

5

6

7

8

9

C:\Users\acer\Desktop\technology\test_java>java com/csdn/lkasdolka/test_1

0

1

2

3

4

5

6

7

8

9

总结:

1.javac用来编译.java文件生成.class文件(字节码文件),java用来执行.class文件,执行的时候去掉.class后缀。

2.如果在源文件中定义了包(package),需要将.class文件放到包定义的对应目录下,否则执行java 命令的时候会出 NoClassDefFoundError的异常

The End~

(如有错误,欢迎指正)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值