学习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 命令行 编译 运行程序的更多相关文章

  1. java命令行编译运行、打包jar

    过程:java文件→class文件→exe执行文件 --------------------------------------------- 一.编译:从.java生成.class   (1)ecl ...

  2. 终端命令行编译运行C#程序HelloWorld

    终端命令行编译运行C#程序HelloWorld 今天忽然有人问我,刚学习java程序的时候,一般老师都会建议我们从配置环境变量开始从命令行编译运行程序,那么学习c#的时候基本是直接安装visual s ...

  3. Java 命令行编译项目

    如果是用Exlipse, 第三方的包可以放在eclipse文件夹的jre包的lib文件夹中! (初学者的一些总结-高手们勿喷哈-) 原因: 以前一直用Eclispe编程环境运行Java.非常舒服,就像 ...

  4. 命令行编译运行Java

    首先要安装JDK,然后设置环境变量Path,添加C:\Program Files (x86)\Java\jdk1.8.0_66\bin 然后建立一个名为j.java的文件,里面加入如下代码: publ ...

  5. win10 uwp 使用 msbuild 命令行编译 UWP 程序

    原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...

  6. Java 命令行 编译、执行、打包

    Java 命令行 编译.执行.打包 一般来说 IDE 能够很方便的编译打包. 我写这篇文章是遇到了不能使用 IDE 的情况,简单记录一下,不做深入探讨. 环境 linux jdk 1.8 简单的编译执 ...

  7. 使用命令行编译Qt程序

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  8. Linux java 命令行编译 jar包

    Java 命令行编译成class,然后在打包成jar文件. 编译成class javac -classpath $CLASS_PATH -d class ./src/Hello.java 可以通过ja ...

  9. 【linux基础】使用命令行编译运行c++程序

    前言 在linux系统运行程序,小鹅知道的有3种编译方式,一种是直接命令行编译,一种是使用Cmake,一种是使用脚本文件(*.sh).本文介绍的是使用命令行编译. 使用过程 注意不同系统的编译器版本可 ...

随机推荐

  1. Redis hash结构 和常用命令

    Redis 数据结构 -- 哈希 hash 是 一个 String 类型的field 和 value 的映射表 hash 的键值 对在内存中的一种无序的状态 命令 说明 备注 hdel key fie ...

  2. Objective-C—— Block

    OC Block 其实功能就类似C语言的函数指针,js中的闭包之类的.把代码块当做一个变量就行操作,有自己的变量和作用域. 简单看一下Block的语法和可能出现的问题: Block语法: block语 ...

  3. php常见报错

    Php常见错误提示 一.Fatal error: Call to undefined function……函数不存在,可能的原因:系统不存在这个函数且你也没自定义 二.syntax error, un ...

  4. css下拉菜单写法

    网页导航栏的下拉效果,通过div框的显示和隐藏实现. <html> <head> <meta charset="UTF-8"> <titl ...

  5. Python+selenium第一个自动化脚本

    第一个自动化脚本(用Python写的) from selenium import webdriver  #从selenium导入webdriber driver=webdriber.Firefox() ...

  6. ubuntu操作系统的目录结构

    /:根目录,是所有目录的绝对路径的起始点.一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin (类似的还有/usr/bin) ...

  7. react基础篇五

    再看JSX 本质上来讲,JSX 只是为 React.createElement(component, props, ...children) 方法提供的语法糖.比如下面的代码: <MyButto ...

  8. sessionStorage和localStorage存储的转换不了json

    先说说localStorage与sessionStorage的差别 sessionStorage是存储浏览器的暂时性的数据,当关闭浏览器下次再打开的时候就不能拿到之前存储的缓存了 localStora ...

  9. 团体程序设计天梯赛-练习集-L1-036. A乘以B

    L1-036. A乘以B 看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过100的整数A和B,输出A乘以B的值. 输入格式: 输入在第一行给出两个整数A和B(-100 < ...

  10. PAT_A1135#Is It A Red-Black Tree

    Source: PAT A1135 Is It A Red-Black Tree (30 分) Description: There is a kind of balanced binary sear ...