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 <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_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~
(如有错误,欢迎指正)
java 命令行 编译 运行程序的更多相关文章
- java命令行编译运行、打包jar
过程:java文件→class文件→exe执行文件 --------------------------------------------- 一.编译:从.java生成.class (1)ecl ...
- 终端命令行编译运行C#程序HelloWorld
终端命令行编译运行C#程序HelloWorld 今天忽然有人问我,刚学习java程序的时候,一般老师都会建议我们从配置环境变量开始从命令行编译运行程序,那么学习c#的时候基本是直接安装visual s ...
- Java 命令行编译项目
如果是用Exlipse, 第三方的包可以放在eclipse文件夹的jre包的lib文件夹中! (初学者的一些总结-高手们勿喷哈-) 原因: 以前一直用Eclispe编程环境运行Java.非常舒服,就像 ...
- 命令行编译运行Java
首先要安装JDK,然后设置环境变量Path,添加C:\Program Files (x86)\Java\jdk1.8.0_66\bin 然后建立一个名为j.java的文件,里面加入如下代码: publ ...
- win10 uwp 使用 msbuild 命令行编译 UWP 程序
原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...
- Java 命令行 编译、执行、打包
Java 命令行 编译.执行.打包 一般来说 IDE 能够很方便的编译打包. 我写这篇文章是遇到了不能使用 IDE 的情况,简单记录一下,不做深入探讨. 环境 linux jdk 1.8 简单的编译执 ...
- 使用命令行编译Qt程序
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- Linux java 命令行编译 jar包
Java 命令行编译成class,然后在打包成jar文件. 编译成class javac -classpath $CLASS_PATH -d class ./src/Hello.java 可以通过ja ...
- 【linux基础】使用命令行编译运行c++程序
前言 在linux系统运行程序,小鹅知道的有3种编译方式,一种是直接命令行编译,一种是使用Cmake,一种是使用脚本文件(*.sh).本文介绍的是使用命令行编译. 使用过程 注意不同系统的编译器版本可 ...
随机推荐
- CSS3之 transform和animation区别
CSS3 有3种和动画相关的属性:transform, transition, animation.其中 transform 描述了元素静态样式.而transition 和 animation 却都能 ...
- nodejs脚手架express-generator
1.安装生成器 npm install express-generator -g 2. 创建名称为APP的应用: express my-project 3.安装依赖包 cd my-project np ...
- 五分钟学习React(六):元素(Element)和组件(Component)
俗话说"万丈高楼平地起",从这一期开始,我们将使用基于Webpack+Babel的React学习React框架中的一些基础概念.在学习React的过程中经常会把Element.Cl ...
- Android自定义开机和关机动画
Android自定义开机和关机动画 Android在开机的过程中,会经历三张图片,关于静态图的修改在我的这篇文章中有介绍到: Android开机图片替换 现在要介绍的是怎么用动画替换静态图片.开/关机 ...
- Linux通信之poll机制分析
poll机制分析 韦东山 2009.12.10 所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数.比如系统调用open.read.write.poll,与之对应的 ...
- list用法(用到了再补充)
之前学list吧,也知道很多,但是到用的时候却无从下手,还是不熟悉的缘故,看来基础知识应该再加强,要达到信手拈来的程度才行. 先说下list的特性:有序可重复,也可以存储多个空值. 我用到的方法: L ...
- [WIFI插座][阅读记录][SoC][RT5350] 00.目录 RALINK AP SDK 4.1.0.0 USER’s MANUAL
来源是CSDN,百度网盘下载地址 http://pan.baidu.com/share/link?shareid=3504767505&uk=3426044377 授权声明,略过 免责声明 ...
- IIS日志分析:SC-Status语义
在网站属性-网站-日志(属性) 中进行设定该站点IIS日志常规属性和扩展属性,扩展属性设置IIS日志包含字段显示. HTTP协议状态(sc-status)码的含义 IIS中 100 Continue ...
- 读书笔记之:C++ Primer (第4版)及习题(ch12-ch18) [++++]
读书笔记之:C++ Primer (第4版)及习题(ch12-ch18) [++++] 第12章 类 1. 类的声明与定义:前向声明,不完全类型 2. 从const函数返回*this 3. 可变数据成 ...
- 怎么从传统的盒子思想转为Flex 布局(css)
前端进化很快,总是有新的技术出来,开始可能有些人用惯了盒子模型的思想 依赖 display属性 + position属性 + float属性.这三大件.它对于那些特殊布局非常不方便 我们就来看看Fle ...