简单记述javac -verbose、-d 这两个主要参数、java的-verbose参数
采用问题驱动的方式表达
1、含有目录结构的.java源文件怎样在编译的时候同时生成目录结构
javac -d .\ HelloWrold.java
说明:-d 表示存放.class文件的目录。
javac -verbose HelloWorld.java
说明:-verbose 输出编译时详细信息,包括源文件和类文件的查找路径。
2、一、cmd进入命令行
二、cd d:\test
三、java -verbose HelloWorld
报错:
[color=red]错误原因说明:[/color]
java中的一个类是包名+类名唯一标志的。
[color=red][b]还不完全理解,望高手不吝赐教。[/b][/color]
3、怎样将一个.class文件加入到类路径中呢?
假定源文件在 c:\mylib\com\shinechina\MyClass.java
编译后c:\mylib\com\shinechina\MyClass.class
怎么指定classpath呢
常见毛病
1、c:\mylib\com\shinechina\
2、c:\mylib\com\
正确
1、c:\mylib\
2、c:\mylib
实际java代码如下(放在D:\test目录下):
java基础知识好久不看了,很多都忘记了,还是在两年前学习的javac和java的用法,前些时候想要把几个class文件打成一个jar包,jar命令的使用方法已经不记得了,搞了好久才搞出来。对javac、java的加载原理也已经快忘完了。今天终于有时间将困扰我好久的问题解决了。
采用问题驱动的方式表达
1、含有目录结构的.java源文件怎样在编译的时候同时生成目录结构
javac -d .\ HelloWrold.java
说明:-d 表示存放.class文件的目录。
javac -verbose HelloWorld.java
说明:-verbose 输出编译时详细信息,包括源文件和类文件的查找路径。
2、一、cmd进入命令行
二、cd d:\test
三、java -verbose HelloWorld
报错:
D:\test>java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong nam
e: com/mz/hw/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
[color=red]错误原因说明:[/color]
java中的一个类是包名+类名唯一标志的。
[color=red][b]还不完全理解,望高手不吝赐教。[/b][/color]
3、怎样将一个.class文件加入到类路径中呢?
假定源文件在 c:\mylib\com\shinechina\MyClass.java
编译后c:\mylib\com\shinechina\MyClass.class
怎么指定classpath呢
常见毛病
1、c:\mylib\com\shinechina\
2、c:\mylib\com\
正确
1、c:\mylib\
2、c:\mylib
实际java代码如下(放在D:\test目录下):
package com.mz.hw;
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
System.out.println("HelloWorld的类加在器:"+HelloWorld.class.getClassLoader());
//启动类加载器
System.out.println("引导类(启动类)加载器加载的包:"+java.util.Arrays.asList(sun.misc.Launcher.getBootstrapClassPath().getURLs()).toString());
//系统类加载器
System.out.println("获得系统类加载器:"+ClassLoader.getSystemClassLoader());
System.out.println("获得系统类加载器的父类:"+ClassLoader.getSystemClassLoader().getClass().getSuperclass());
//查看系统类加载器加载了哪些类?
try{
ClassLoader cl = ClassLoader.getSystemClassLoader();
java.lang.reflect.Field classes = ClassLoader.class.getDeclaredField("classes");
classes.setAccessible(true);//修改字段的可访问权限.
java.util.List ret=(java.util.List)classes.get(cl);
System.out.println("系统类加载类列表:"+ret.toString());
}catch(Exception e){
}
//扩展类加载器
System.out.println("获得扩展类加载器:"+ClassLoader.getSystemClassLoader().getParent().getClass());
System.out.println("获得扩展类加载器的父类:"+ClassLoader.getSystemClassLoader().getParent().getClass().getSuperclass());
}
}
java基础知识好久不看了,很多都忘记了,还是在两年前学习的javac和java的用法,前些时候想要把几个class文件打成一个jar包,jar命令的使用方法已经不记得了,搞了好久才搞出来。对javac、java的加载原理也已经快忘完了。今天终于有时间将困扰我好久的问题解决了。