javac、jar使用实录
因项目管理部署需要,记录一下过程,以免下次忘记了,再次使用又需要重头再来,只记录正确的操作方式,可能会提到某些错误
建立项目所在目录F:\www
案例一
其下建立项目的java源文件的包目录结构、java源文件
com\test\hello\HelloWorld.java,代码如下:
package com.test.hello;
public class HelloWorld{
public void say(){
System.out.println("hello world !");
}
}
com\test\people\People.java,代码如下
package com.test.people;
import com.test.hello.*;
public class People{
public void say(){
HelloWorld hello=new HelloWorld();
hello.say();
}
public static void main(String[] args){
People people=new People();
people.say();
}
}
从控制台进入F:\www目录下,运行如下两条命令,控制台输出正确结果
javac com/test/people/People.java com/test/hello/HelloWorld.java
java com/test/people/People
说明1:
从源文件中可以发现,在People.java中引用HelloWorld,然而javac编译语句写为如下语句也是可以的(源文件的顺序相反)
javac com/test/hello/HelloWorld.java com/test/people/People.java
这是否可以说明javac编译语句中源文件的引用顺序无关?【等待验证】
说明2:
上述的编译命令换为如下语句也是可以的,注意是在F:\www目录下
javac com/test/people/People.java
但是如果进入到people目录下,则无法编译
进入test目录下,键入如下语句也可以编译
javac people/People.java hello/HelloWorld.java
但是运行却必须在F:\www目录下
案例二
从控制台进入F:\www目录下,在案例一的基础上(主要是需要其中编译后的某些.class文件,看下面的命令就会明白),运行如下命令,将com/test/hello/HelloWorld.java打包为hello.jar文件,以此来测试在程序中引用第三方jar包时程序的编译与运行
jar cf hello.jar com/test/hello/HelloWorld.class
此时在F:\www目录下会得到hello.jar文件
接着键入jar tvf hello.jar命令,回车,可查看hello.jar的内容结构
再接着删除项目的hello目录(包括其下的文件),键入如下命令运行程序,控制台输出正确结果
java -cp .;hello.jar com/test/people/People
说明:
在上述删除hello目录时,可删除people目录下的People.class文件,键入如下命令进行编译
javac -cp hello.jar com/test/people/People.java
接着键入上面的运行命令,控制台输出正确结果
下面接着做一些其他的测试,我会慢慢更新
大家如果看到其他情形麻烦告知,省的我慢慢去测试,O(∩_∩)O谢谢
案例三
引用多个第三方jar包的情况
在F:\www目录下新建org/apache/service/Work.java,代码如下:
package org.apache.service;
public class Work{
public void writeCode(){
System.out.println("I should write java code everyday !");
}
}
键入如下命令,进行编译、打包,在F:\www目录下得到apache-service_1.0.jar
javac org/apache/service/Work.java
jar cf apache-service_1.0.jar org/apache/service/Work.class
删除org目录,修改People.java源代码如下:
package com.test.people; import com.test.hello.*;
import org.apache.service.*; public class People{ public void say(){
HelloWorld hello=new HelloWorld();
hello.say();
Work work=new Work();
work.writeCode();
} public static void main(String[] args){
People people=new People();
people.say();
} }
键入如下命令,进行编译、运行,控制台输出正确结果
javac -cp hello.jar;apache-service_1.0.jar com/test/people/People.java
java -cp .;hello.jar;apache-service_1.0.jar com/test/people/People
至此差不多测试完毕
javac、jar使用实录的更多相关文章
- java在window下用cmd (javac、jar)命令行模拟Intellij IDEA软件生成jar包
@@首先最重要的cmd命令: javac ,jar :使用如下(注意[.]不要输错): 1. javac编译: D:\MyWorkSet\idea_hadoop>javac -d .\out\p ...
- java eclipse打jar包和执行jar中的main函数
jar包使用eclipse打包步骤 右键需要打包的项目->选择Export 到这里有两种打包的方式 1.如果项目中没有使用其他第三方包等,则直接选择下图中的第一种即可(JAR file) 2.如 ...
- 使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包
<?xml version="1.0" encoding="GB2312"?> <project name="CardInfo-We ...
- nodejs调用jar
目前nodejs调用jar主要有两种方式: 通过创建子进程运行java -jar命令调用包含main方法的jar 使用node-java通过c++桥接调用jar 方法一(子进程运行): const { ...
- 《Ant权威指南》笔记(一)
Ant的由来(序) James Duncan Davidson当年用纯Java开发Tomcat的时候,不仅想让它跨平台运行,还想要在不同的操作系统上都能够进行开发和构建.这种较大的项目的编译构建过程是 ...
- ubuntu安装jdk-6u45-linux-x64.bin___ZC_20160423
for : Android4.4源码编译 环境 : ubuntu12.04_desktop_amd64 1. 1.1.jdk-6u45-linux-x64.bin 放置于 /home 1.2.命令&q ...
- ubuntu完全卸载一个软件
今天卸载一个软件,老是有配置残留,网上找到了解决方案: 查看已安装的软件: dpkg -l |grep 软件名 找到一大堆相关的包,然后卸载核心的包: sudo apt-get remove --pu ...
- 跟我一步一步开发自己的Openfire插件
http://www.blogjava.net/hoojo/archive/2013/03/07/396146.html 跟我一步一步开发自己的Openfire插件 这篇是简单插件开发,下篇聊天记录插 ...
- 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件[转]
上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfire插件.一步步很详细的介绍到简单插件开发,带Servlet的插件的开发.带JS ...
随机推荐
- python:进程操作
一.多进程应用 import socket from multiprocessing import Process def talk(conn): conn.send(b'connected') re ...
- ZJOI2019Day1镇海中学游记(3.24~3.27)
前言 第一次正式参加省选!不管怎么说,虽然明知自己很弱,但还是要尽力去尝试吧! 最好能进前\(100\),不然就没法去\(Day2\)了. \(Mar\ 24th\):出发 今天,我们正式从二中向宁波 ...
- 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)
点此看题面 大致题意: 给你某些点的度数,其余点度数任意,让你求有多少种符合条件的无根树. \(prufer\)序列 一道弱化版的题目:[洛谷2290][HNOI2004] 树的计数. 这同样也是一道 ...
- Photoshop 画布的渐变填充
之前丢掉的要开始慢慢的捡起来,因为学如逆水行舟,不进则退.古人诚不欺我等. 1.新建图层,或者就在当前图层进行操作,选择图层 2.工具箱---1渐变工具---2径向渐变---模式--正常.不透明100 ...
- 2018.11.7 关于将Web项目部署到阿里云服务器-5个步骤搞定
将Eclipse导出的War包部署到阿里云服务器上,提供给移动端实时的访问 1. 先登录阿里云网站注册账号,选择服务器类型(我用的是 云服务器ECS), 如果你还是在读大学生可享受优惠价,最低好像是9 ...
- QBXT Day 2 记录
例题1:乌龟棋 略 例题2: noip2015 子串 有两个仅包含小写英文字母的字符串 A 和 B. 现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出 ...
- Openresty最佳案例 | 第4篇:OpenResty常见的api
转载请标明出处: http://blog.csdn.net/forezp/article/details/78616660 本文出自方志朋的博客 获取请求参数 vim /usr/example/exa ...
- oracle日常监控语句
oracle常用的性能监控SQL语句 一.查询历史SQL: ---正在执行的SQL语句: select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT fro ...
- Less 常用基础知识
LESS 中的注释 也可以额使用css 中的注释(/**/) 这种方式是可以被编译出来的. 也可以使用// 注释 不会被编译的 变量 声明变量的话一定要用@开头 例如:@变量名称:值: @test_w ...
- #leetcode刷题之路2-两数相加
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...