java 命令行 编译 执行程序
2014-10-06 16:50
309 查看
学习java使用IDE前最好先用用命令行的javac、java来跑一跑简单的程序,这样可以熟悉一下包管理对.class文件路径的影响。
我们先写一段简单的代码:
写好后保存为test_1.java,windows环境下WIN+R打开命令行,cd到test_1.java文件目录下。
用命令
编译文件,如果之前java环境都配置好了的话,这时候在命令行中输入dir我们可以看到目录下多了一个test_1.class文件:
接下来用
尝试运行字节码文件,却出现了异常。
这时候再cd回最初的工作目录(com的父目录),在命令行输入
总结:
1.javac用来编译.java文件生成.class文件(字节码文件),java用来执行.class文件,执行的时候去掉.class后缀。
2.如果在源文件中定义了包(package),需要将.class文件放到包定义的对应目录下,否则执行java 命令的时候会出 NoClassDefFoundError的异常
The End~
(如有错误,欢迎指正)
我们先写一段简单的代码:
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 <DIR> . 2014/10/06 16:23 <DIR> .. 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_10
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~
(如有错误,欢迎指正)
相关文章推荐
- cmd命令行执行java程序的编译和执行的方法及可能出现找不到或无法加载主类的错误的解决
- Java命令行编译并执行Java程序
- 命令行环境下编译执行java程序步骤
- eclipse编译的java程序命令行执行时提示找不到mysql驱动文件时的解决办法
- eclipse中编译java程序,究竟跟命令行中编译java程序究竟有什么区别
- java程序的执行和编译
- 用dos命令行执行java程序的方法
- 大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
- JAVA 命令行下 编译,解释执行时 参数大全 javac java
- dos窗口下能编译java程序,但不能执行情况分析
- JAVA程序命令行下的执行
- 【转】在Linux下编译与执行Java程序
- 使用命令行执行Java程序
- Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行
- JavaSE第一讲:JavaSE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行
- 用ultraEdit编译和执行java程序
- 在 Source Insight 中编译和执行Java 程序
- 命令行执行java程序
- Android,java发送intent,native c/c++发送intent, am命令行执行程序。
- 用dos命令行执行java程序的方法