java 编译运行记录~
来源:互联网 发布:罗技g502下什么软件 编辑:程序博客网 时间:2024/05/16 05:40
- 摘要
- 编译
- 运行
- 总结
摘要
主要是讲讲java编译运行过程(操作过程,不是原理过程),记录一下遇到的问题。
编译
编译是对文件的编译,所以参数那里是文件名(要.java后缀),同时编译时对类名和位置没有要求,即不管你有没有package, 参数都是你看到的实实在在的文件名,而且你可以在任意地方编译。windows系统一般都是gbk编码,Linux一般是UTF-8,而我们在eclipse上编写源码一般是UTF-8(这个是可设置的,我个人喜欢UTF-8),如果你的文件编码是GBK那在Windows上完全没有问题,但是如果是UTF-8,则在使用javac编译时需要加一个参数-encoding utf-8
示例如下:
不加参数的:
加了参数的:
在任意地方编译:
编译很简单,没什么特别要注意的,就是一个编码问题(最起码我目前为止233)
运行
运行用的是java虚拟机,命令是java -options classname
。java运行的本质就是jvm去classpath指定的目录里寻找到操作者提供的类,然后运行其main方法。只要清楚两个点就OK了,1、classpath指定的目录,2、命令里提供的类。注意这里提供的是完整类名,不是文件名,所以不能加.class后缀。还有一点需要注意的是如果有package语句,那完整类名就是包名加类名,比如我上面的,如果没有package语句,完整类名就是Server,但是我有package语句,所以完整类名是dn.dmandp.maingui.Server。
总结
写到这里突然发现只要确保两点就能正确运行,第一完整类名正确,如果有package就加上包名+类名,如果没有就直接包名;第二classpath目录要直接包含类(无论你写的还是你依赖的)比如下面的src目录是我写的类dn.dmandp.maingui.Server的直接目录,所以classpath要指定src目录,然后src/mysql-connector-java-5.1.39-bin.jar是我依赖的数据库类的直接目录。没错,依赖哪个包,classpath就要直接包含那个包,包实际就是一个文件夹,所以直接指定包就是指定包里面类的直接目录。
classpath可以直接设置环境变量,也可以使用java命令时临时指定。例子如上。classpath会默认包含当前执行java指令的目录,但是如果确实不行可以把当前目录上去,如果你要类在当前目录jvm又找不到的话。暂时就那么多~