因项目管理部署需要,记录一下过程,以免下次忘记了,再次使用又需要重头再来,只记录正确的操作方式,可能会提到某些错误

建立项目所在目录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使用实录的更多相关文章

  1. java在window下用cmd (javac、jar)命令行模拟Intellij IDEA软件生成jar包

    @@首先最重要的cmd命令: javac ,jar :使用如下(注意[.]不要输错): 1. javac编译: D:\MyWorkSet\idea_hadoop>javac -d .\out\p ...

  2. java eclipse打jar包和执行jar中的main函数

    jar包使用eclipse打包步骤 右键需要打包的项目->选择Export 到这里有两种打包的方式 1.如果项目中没有使用其他第三方包等,则直接选择下图中的第一种即可(JAR file) 2.如 ...

  3. 使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包

    <?xml version="1.0" encoding="GB2312"?> <project name="CardInfo-We ...

  4. nodejs调用jar

    目前nodejs调用jar主要有两种方式: 通过创建子进程运行java -jar命令调用包含main方法的jar 使用node-java通过c++桥接调用jar 方法一(子进程运行): const { ...

  5. 《Ant权威指南》笔记(一)

    Ant的由来(序) James Duncan Davidson当年用纯Java开发Tomcat的时候,不仅想让它跨平台运行,还想要在不同的操作系统上都能够进行开发和构建.这种较大的项目的编译构建过程是 ...

  6. 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 ...

  7. ubuntu完全卸载一个软件

    今天卸载一个软件,老是有配置残留,网上找到了解决方案: 查看已安装的软件: dpkg -l |grep 软件名 找到一大堆相关的包,然后卸载核心的包: sudo apt-get remove --pu ...

  8. 跟我一步一步开发自己的Openfire插件

    http://www.blogjava.net/hoojo/archive/2013/03/07/396146.html 跟我一步一步开发自己的Openfire插件 这篇是简单插件开发,下篇聊天记录插 ...

  9. 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件[转]

    上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfire插件.一步步很详细的介绍到简单插件开发,带Servlet的插件的开发.带JS ...

随机推荐

  1. Python:运算与循环

    1.格式化输出 name = input("请输入你的名字:") age =input("请输入你的年龄:") job =input("请输入你的工作 ...

  2. springMVC+thymeleaf form表单提交前后台数据传递

    后端: @RequestMapping(value = "/add", method=RequestMethod.POST) public String save(@ModelAt ...

  3. webpack——概念的引入

    ## 在网页中会引用哪些常见的静态资源?+ JS - .js .jsx .coffee .ts(TypeScript 类 C# 语言)+ CSS - .css .less .sass .scss+ I ...

  4. html基础用法(上)

    html的定义: html超文本标记语言,标准通用标记语言下的一个应用. “超文本”就是指页面内可以包含图片,链接,甚至音乐,程序等非文字语言. 超文本标记语言的结构包括“头”部分(head),和“主 ...

  5. React中setState同步更新策略

    setState 同步更新 我们在上文中提及,为了提高性能React将setState设置为批次更新,即是异步操作函数,并不能以顺序控制流的方式设置某些事件,我们也不能依赖于this.state来计算 ...

  6. 解析 Nginx 负载均衡策略

    转载:https://www.cnblogs.com/wpjamer/articles/6443332.html 1 前言 随着网站负载的不断增加,负载均衡(load balance)已不是陌生话题. ...

  7. 原生js方面的兼容性问题

    1.关于获取行外样式 currentStyle 和 getComputedStyle 出现的兼容性问题  我们都知道js通过style不可以获取行外样式,当我们需要获取行外样式时:  我们一般通过这两 ...

  8. 【模板】素数测试(Miller-Rabin测试)

    基础素数测试模板 对于大数的素性判断,目前Miller-Rabin算法应用最广泛.一般底数仍然是随机选取,但当待测数不太大时,选择测试底数就有一些技巧了.比如,如果 被测数小于4759123141,那 ...

  9. ABAP术语-Lock Mode

    Lock Mode 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/29/1085732.html Status that determine ...

  10. TiDB集群手动安装

    TIDB的安装 TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytic ...