今天开始java

 

1、单个class的编译

新建“Helloworld.java”文档,

public class Helloworld{

public static void main(String args[]){

System.out.println("Hello java world!");

}

}

保存。

使用命令提示符。

 

C:/Documents and Settings/Administrator>javac

'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。

=====未设置path环境变量,所以javac并非是系统命令!

 

C:/Documents and Settings/Administrator>cd C:/Program Files/Java/jdk1.6.0_20/bin

 

C:/Program Files/Java/jdk1.6.0_20/bin>javac

用法:javac <选项> <源文件>

其中,可能的选项包括:

  -g                         生成所有调试信息

  -g:none                    不生成任何调试信息

  -g:{lines,vars,source}     只生成某些调试信息

  -nowarn                    不生成任何警告

  -verbose                   输出有关编译器正在执行的操作的消息

  -deprecation               输出使用已过时的 API 的源位置

  -classpath <路径>            指定查找用户类文件和注释处理程序的位置

  -cp <路径>                   指定查找用户类文件和注释处理程序的位置

 ……(人工省略)

 

 

C:/Program Files/Java/jdk1.6.0_20/bin>javac E:/Helloworld.java

====编译成功,在所在文件夹下生成一个Helloworld.class的文件,全部是字节码。

 

C:/Program Files/Java/jdk1.6.0_20/bin>java

Usage: java [-options] class [args...]

           (to execute a class)

   or  java [-options] -jar jarfile [args...]

           (to execute a jar file)

 

where options include:

    -client       to select the "client" VM

    -server       to select the "server" VM

    -hotspot      is a synonym for the "client" VM  [deprecated]

                  The default VM is client.

 

    -cp <class search path of directories and zip/jar files>

    -classpath <class search path of directories and zip/jar files>

                  A ; separated list of directories, JAR archives,

                  and ZIP archives to search for class files.

……(人工省略)

关于classpath的使用:
C:/Program Files/Java/jdk1.6.0_20/bin>java E:/Helloworld.class
Exception in thread "main" java.lang.NoClassDefFoundError: E:/Helloworld/class
Caused by: java.lang.ClassNotFoundException: E:/Helloworld.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: E:/Helloworld.class.  Program will exit.
=====未找到class,编译错误。
C:/Program Files/Java/jdk1.6.0_20/bin>java E:/Helloworld
Exception in thread "main" java.lang.NoClassDefFoundError: E:/Helloworld
Caused by: java.lang.ClassNotFoundException: E:/Helloworld
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: E:/Helloworld.  Program will exit.
C:/Program Files/Java/jdk1.6.0_20/bin>java -classpath e: Helloworld
Hellow java world!
====使用classpath路径命令,终于编译成功。
**配置java path路径:
选择“我的电脑”,鼠标右击,选择“属性”,调至“高级”面板,
点击“环境变量”,选择“系统变量”,找到“path”,双击或点击“编辑”按钮!
复制jdk路径至path中,两个path之间使用“;”隔开。
**关闭原来的命令提示符!重新开一个命令提示符**
C:/Documents and Settings/Administrator>java
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -client       to select the "client" VM
    -server       to select the "server" VM
    -hotspot      is a synonym for the "client" VM  [deprecated]
                  The default VM is client.
……(人工省略)
2、多个class的编译
新建一个“Helloworld.java”文件,
public class A{
}
class B{
}
class C{
   public static void main(String args[]){
      System.out.println("C");
   } 
}
保存。
使用命令提示符。
C:/Documents and Settings/Administrator>javac e:/Helloworld.java
e:/Helloworld.java:5: 非法字符: /8220
      System.out.println(“C”);
   
e:/Helloworld.java:5: 需要 ';'
      System.out.println(“C”);
                          ^
e:/Helloworld.java:5: 非法字符: /8221
      System.out.println(“C”);
                           ^
e:/Helloworld.java:5: 需要 ';'
      System.out.println(“C”);
                            ^
4 错误
====因为输出语句C,使用了中文的双引号“”,导致程序错误!,修正,重新编译。
C:/Documents and Settings/Administrator>javac e:/Helloworld.java
e:/Helloworld.java:1: 类 A 是公共的,应在名为 A.java 的文件中声明
public class A{}
       ^
1 错误
====因为类名与文件名不一致,导致编译错误,修改文件名,与定义的public 类名称一致。
C:/Documents and Settings/Administrator>javac e:/A.java
C:/Documents and Settings/Administrator>java -classpath e: A
Exception in thread "main" java.lang.NoSuchMethodError: main
====在类A中,没有main函数,所以编译出错,需要找到类中含有main函数的类才能够编译成功!
C:/Documents and Settings/Administrator>java -classpath e: c
Exception in thread "main" java.lang.NoClassDefFoundError: c (wrong name: C)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: c.  Program will exit.
====类名使用小写字母c,与实际的“C.class”不一致,导致编译出错,从中可以发现,java是大小写敏感的语言。
C:/Documents and Settings/Administrator>java -classpath e: C
C
====编译完成,输出“C”!

 

 

 

阅读更多
个人分类: 学习札记
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭