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源程序(包含外部包中定义的类)的更多相关文章

  1. java反射查看jar包中所有的类名方法名

    不反编译,不用其他工具,用java反射查看jar包中所有的类名方法名,网上很多都报错,下面这个你试试看:话不多说直接撸代码: import java.lang.reflect.Field; impor ...

  2. 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

    ---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...

  3. 1.java.io包中定义了多个流类型来实现输入和输出功能,

    1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B ...

  4. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  5. Java 访问限制符 在同一包中或在不同包中:使用类创建对象的权限 & 对象访问成员变量与方法的权限 & 继承的权限 & 深入理解protected权限

    一.实例成员与类成员 1. 当类的字节码被加载到内存, 类中类变量.类方法即被分配了相应内存空间.入口地址(所有对象共享). 2. 当该类创建对象后,类中实例变量被分配内存(不同对象的实例变量互不相同 ...

  6. int是java.lang包中可用的类的名称

    int是java.lang包中可用的类的名称(x) int为基本数据类型,不是类

  7. 24.Java中atomic包中的原子操作类总结

    1. 原子操作类介绍 在并发编程中很容易出现并发安全的问题,有一个很简单的例子就是多线程更新变量i=1,比如多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchr ...

  8. Java中 util 包 Calendar类制作万年历(不用自己写方法,直接用Java写好的包中的类的方法)

    代码前需要了解的关于Calendar类的内容:      1.在util包中,首先要知道Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象.Calendar 的 ...

  9. java -cp 执行jar包里的某个类

    当我们需要测试某个功能时,需要在linux环境下执行某个类的main方法来测试 可以使用java -cp xxx.jar com.MyClass来执行某个类 java -cp test.jar:lib ...

随机推荐

  1. Binding and styling text to a RichTextBox in WPF

    http://www.codeproject.com/Articles/137209/Binding-and-styling-text-to-a-RichTextBox-in-WPF The Rich ...

  2. im4java学习---阅读documentation文档

    Utilities----im提供的一些工具类 ①.读取图片文件信息---Info类 我们之前的做法: op.format("width:%w,height:%h,path:%d%f,siz ...

  3. postfix导致maillog填满磁盘空间的巨坑!

    双休日回家pull在公司修改的代码...于是菜鸟的linux探索之路开始了 1.df -f发现磁盘又占满了(之前是node的error) 2.发现maillog整整10个G,无数条(Jul 7 04: ...

  4. COGS727 [网络流24题] 太空飞行计划

    [问题描述] W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪 ...

  5. java 获取当前应用程序路径

    package javaapplication1; import javax.swing.JOptionPane; /** * * @author Administrator */ public cl ...

  6. system32下 exe文件作用

    system32下EXE文件的作用说明 A accwiz.exe 辅助功能向导 ahui.exe 应用程序兼容用户界面 alg.exe 为 Internet 连接共享和 Internet 连接防火墙提 ...

  7. 转:SWT中的Display 对象和 Shell对象

    转自: http://blog.csdn.net/chulaixi/article/details/3095478 我们书写swt程序的步骤,这些步骤是: 1. 创建一个Display对象 2. 创建 ...

  8. docker从零开始 存储(三)bind mounts

    使用bind mounts 自Docker早期以来bind mounts 一直存在.与volumes相比,绑定挂载具有有限的功能.使用bind mounts时,主机上的文件或目录将装入容器中.文件或目 ...

  9. rest_framework 认证流程

    一.基本流程 rest_framework框架是基于CBV基础开发的(VPIView(View)),所以基本流程与CBV流程相似 当我们的请求发来后,会走as_views,执行view里面的方法,最开 ...

  10. Django admin 界面无法加载 CSS 问题解决方案(服务器 Apache 服务器)

    主要原因: 未找到存放静态文件的目录 没有访问目录的权限 基础知识: 在 CentOS 下面,Django 的静态文件存放在目录: /usr/lib/python2./site-packages/dj ...