手动编译含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 ...
随机推荐
- java获取mysql数据库表、字段、字段类型、字段注释
最近想要写一个根据数据库表结构生成实体.mapper接口.mapping映射文件.service类的简单代码生成工具,所以查阅了一些资料,怎样获取数据库的表.表中字段.字段类型.字段注释等信息. 最后 ...
- oracle中函数
一:前言 最近决定每天都把知识点总结下,然后每个星期把知识点在进行分类发表日志. 二:The Question (1):在oracle中进行年龄的计算,知道出生日期进行计算后截取,本来是一个很简单的函 ...
- Tomcat启动报错:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
测试tomcat的comet Java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet 异常 因为工程 ...
- 01-UIDynamic简单演练demo源代码
源代码下载: 01-简单演练.zip72.0 KB // // ViewController.m // 01.简单演练 // // Created by apple on 13-12-24. / ...
- linux内核分析笔记----中断和中断处理程序【转】
转自:http://www.cnblogs.com/hanyan225/archive/2011/07/17/2108609.html 中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因 ...
- 用maven创建第一个SpringMVC
首先创建一个maven项目,然后依次完成如下配置: 在pom.xml加入如下基础配置,利用maven加载我们所需要的jar: <project xmlns="http://maven. ...
- 使用python抓取并分析数据—链家网(requests+BeautifulSoup)(转)
本篇文章是使用python抓取数据的第一篇,使用requests+BeautifulSoup的方法对页面进行抓取和数据提取.通过使用requests库对链家网二手房列表页进行抓取,通过Beautifu ...
- 安卓长按交互onCreateContextMenu的简单 用法
1.可在activity和fragment中使用. 2.使用方法 (1)注册 registerForContextMenu(btn);//btn是要实现交互的控件 (2)重写onCreateConte ...
- Codeforces 702D Road to Post Office(模拟 + 公式推导)
题目链接:http://codeforces.com/problemset/problem/702/D 题意: 一个人要去邮局取东西,从家到达邮局的距离为 d, 它可以选择步行或者开车,车每走 k 公 ...
- 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束)
layout: post title: 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束) author: "luowentaoaa" catal ...