手动编译含package的java源程序(包含外部包中定义的类)
1)定义一个GSM类,如下:
包名是“SRC.GSM”,并且此程序引用了外部jar包。使用javac命令对GSM.java进行编译:
GSM.java所在的文件夹如下所示:
切换到这个目录为当前工作目录,使用javac编译(http://www.cnblogs.com/Yogurshine/p/3170554.html):
使用-classpath参数指明外部类的路径(-classpath参数后没有”=“),以使import语句找到类的定义,-d参数是表示直接生成包的结构(就是创建SRC/GSM/GSM.class),其后的"."表示生成的包的结构就存储到本工作目录下,因此最终的结果如下:
最终在工作目录下生成了SRC/GSM/GSM.class。上述如果不使用-d参数的话,就只是直接生成GSM.class文件。
接下来就是对gauss.java进行编译,不过gauss这个类调用了GSM这个类,所以要先编译GSM这个类之后才能编译gauss类,不过没有成功,如下所示:
提示找不到GSM所在的包“LZ.SRC.a”(修改了GSM的源码,package后的一个字符串就是包名,也就是各个文件夹的名字),原因就在于我们在设置了“-classpath”,这里只是临时修改了编译器编译类时所需要的类的路劲(在计算机中配置的classpath这时暂时被覆盖),因此在编译gauss类的时候就只在“lib\jmatio.jar”中查找GSM.class所在的包,明显找不到嘛。因此需要再给-classpath一个配置值,就是".",当前目录。这样在“lib\jmatio.jar”中找不到GSM.class,就会在当前目录找,编译成功,如下:
Windows下使用javac命令,有多个jar包时多个jar包的路径以“;”分割开
而与Windows不同的是,Linux下多个jar包以“:”分隔开。
虽然有个警告,但是编译成功了(警告出现的原因是使用Arraylist泛型创建对象的时候,未指明具体类型 ArrayList a=new ArrayList()。正确的范方式是:ArrayList<Integer> a=new ArrayList<Integer>())。以上就完成了包含外部包的类的编译。
最后,如果两个类存放在同一个包中,那么不用使用import语句就可以直接使用类定义对象(例如在一个java文件中定义若干类,那么这些类中不是有import语句就可以直接互相使用,但是只允许有一个public类),另外,即使是在多个java文件中定义多个类,并且在第一行(包定义必须写在首行)没有定义package,在这些java文件中还是可以直接使用外部类而不用import语句,原因就是虽然没有写package语句,但是IDE编译的时候加上了package语句,并且是这些java文件是相同的package。
2)java提高了一种压缩机制,就是把大量的class文件打包成一个压缩文件,这个压缩文件就称为jar包。使用jar命令生成jar包;
lz.jar是生成的jar包的名称,而之后的“LZ”是待打包的包结构,是之前编译生成的GSM.class(LZ/SRC/a/GSM.class)和gauss.class(LZ/SRC/b/GSM.class)。jar包可是使用常用的解压软件打开,结构如下:
使用以下命令运行jar包:
java -jar lz.jar
不过,你发现这是不行的,提示“lz.jar”中没有主清单属性,这就要修改MANIFEST.MF的内容了,设置主类,不过,我还是没弄成。
手动编译含package的java源程序(包含外部包中定义的类)的更多相关文章
- java反射查看jar包中所有的类名方法名
不反编译,不用其他工具,用java反射查看jar包中所有的类名方法名,网上很多都报错,下面这个你试试看:话不多说直接撸代码: import java.lang.reflect.Field; impor ...
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...
- 1.java.io包中定义了多个流类型来实现输入和输出功能,
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G) A.输入流和输出流 B ...
- java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing
java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...
- Java 访问限制符 在同一包中或在不同包中:使用类创建对象的权限 & 对象访问成员变量与方法的权限 & 继承的权限 & 深入理解protected权限
一.实例成员与类成员 1. 当类的字节码被加载到内存, 类中类变量.类方法即被分配了相应内存空间.入口地址(所有对象共享). 2. 当该类创建对象后,类中实例变量被分配内存(不同对象的实例变量互不相同 ...
- int是java.lang包中可用的类的名称
int是java.lang包中可用的类的名称(x) int为基本数据类型,不是类
- 24.Java中atomic包中的原子操作类总结
1. 原子操作类介绍 在并发编程中很容易出现并发安全的问题,有一个很简单的例子就是多线程更新变量i=1,比如多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchr ...
- Java中 util 包 Calendar类制作万年历(不用自己写方法,直接用Java写好的包中的类的方法)
代码前需要了解的关于Calendar类的内容: 1.在util包中,首先要知道Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象.Calendar 的 ...
- java -cp 执行jar包里的某个类
当我们需要测试某个功能时,需要在linux环境下执行某个类的main方法来测试 可以使用java -cp xxx.jar com.MyClass来执行某个类 java -cp test.jar:lib ...
随机推荐
- 【洛谷 P1667】 数列 (贪心)
题目链接 对于一个区间\([x,y]\),设这个区间的总和为\(S\) 那么我们在前缀和(设为\(sum[i]\))的意义上考虑到原操作其实就是\(sum[x−1]+=S\) , \(sum[x]+S ...
- 【洛谷 P1445】 [Violet]樱花(唯一分解定理)
做了题还是忍不住要写一发题解,感觉楼下的不易懂啊. 本题解使用latex纯手写精心打造. 题意:求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)的正整数解总数. 首先 ...
- LCD实验学习笔记(三):WATCH DOG
看门狗是为了能够防止程序跑飞用的.程序应该定时的去喂狗.如果程序跑飞了,那么就不会去喂狗了.如果超过了喂狗的时间,那么狗就会生成一个信号来reset CPU.一般程序不需要,特殊情况下需要这种机制. ...
- linux基础-临时和永久修改ip地址以及通配符相关
一.临时配置网络(ip,网关,dns) 修改临时ip地址: 1.ifconfig查看当前的网卡和ip地址 2.临时修改IP地址:ifconfig ens32 192.168.16.200/24,ifc ...
- eclipse导入java和android sdk源码,帮助文档
eclipse导入java和android sdk源码,帮助文档 http://blog.csdn.net/ashelyhss/article/details/37993261 JavaDoc集成到E ...
- HDU1018 (斯特林公式)
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- 【 sysbench 性能基准测试 】
度娘解释:sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试. 目前支持的数据库支持:MySQL,pgsql,oracle 这3种数据库. 安装s ...
- WPF中添加一个文本输入框,按Enter回车,执行绑定的Command
在WPF+WMMV模式中使用键盘和鼠标事件的绑定代码如下: <TextBox x:Name="SearchBox" Text="{Binding SearchTex ...
- [loj#115] 无源汇有上下界可行流 网络流
#115. 无源汇有上下界可行流 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据 题 ...
- HDU 6357.Hills And Valleys-字符串非严格递增子序列(LIS最长非下降子序列)+动态规划(区间翻转l,r找最长非递减子序列),好题哇 (2018 Multi-University Training Contest 5 1008)
6357. Hills And Valleys 自己感觉这是个好题,应该是经典题目,所以半路选手补了这道字符串的动态规划题目. 题意就是给你一个串,翻转任意区间一次,求最长的非下降子序列. 一看题面写 ...