β

Java基础14:离开IDE,使用java和javac构建项目

Harries Blog™ 24 阅读

前言:本文教你怎么用 java c和java命令,讲解了 classpath 的原理,以及如何利用脚本( shell 或bat)进行项目部署,离开 id e,还原最 本质 的Java 编译 运行过程,并用简单的 实例 展示这些用法。

具体 代码 在我的 GitHub 中可以找到

https :// git hub.com/h2pl/MyTech

文章 首发于我的个人 博客

http s://h2pl.github.io/2018/05/01/javase14

更多关于Java后端学习的内容请到我的C SDN 博客上查看:

https://blog.csdn.net/a724888

IDE 是把双刃剑,它可以什么都帮你做了,你只要敲几行代码,点几下鼠标,程序就跑起来了,用起来相当方便。

你不用去关心它后面做了些什么,执行了哪些命令,基于什么原理。然而也是这种过分的依赖往往让人散失了最基本的技能,当到了一个没有IDE的地方,你便觉得无从下手,给你个代码都不知道怎么去跑。好比给你瓶水,你不知道怎么打开去喝,然后活活给渴死。

之前用惯了idea,Java文件编译运行的命令基本忘得一干二净。

现在项目出了原型,放到 服务器 上去 测试 ,SSH一登陆上服务器就傻眼了,都是命令行,以前程序图标什么的都成了浮 ,程序放上去了不知道怎么去编译运行,只能补补课了,下面做下补课笔记。

javac命令初窥

注:以下红色标记的 参数 在下文中有所讲解。

本部分参考 https://www.cnblogs.com/xiazdong/p/3216220.html

用法: javac

其中, 可能的选项包括:

-g 生成所有 调试 信息

-g:none 不生成任何调试信息

-g:{lines,vars,source} 只生成某些调试信息

-nowarn 不生成任何警告

-verbose 输出有关编译器正在执行的操作的消息

-depre cat ion 输出使用已过时的 API 的源位置

-classpath <路径> 指定查找用户类文件和 注释 处理程序的位置

-cp <路径> 指定查找用户类文件和注释处理程序的位置

-sourcepath <路径> 指定查找输入源文件的位置

-bootclasspath <路径> 覆盖引导类文件的位置

-extdirs < 目录 > 覆盖所 安装 扩展的位置

-endorseddirs <目录> 覆盖签名的标准路径的位置

-proc:{none,only} 控制是否执行注释处理和/或编译。

-processor
[,
, …] 要运行的注释处理程序的名称; 绕过默认的搜索 进程

-processorpath <路径> 指定查找注释处理程序的位置

-d <目录> 指定放置生成的类文件的位置

-s <目录> 指定放置生成的源文件的位置

-implicit:{none,class} 指定是否为隐式引用文件生成类文件

-encoding <编码> 指定源文件使用的字符编码

-source <发行版> 提供与指定发行版的源兼容性

- tar get <发行版> 生成特定 VM 版本的类文件

-version 版本信息

-help 输出标准选项的提要

-A关键字[=值] 传递给注释处理程序的选项

-X 输出非标准选项的提要

-J<标记> 直接将 <标记> 传递给运行时系统

-Werror 出现警告时终止编译

@<文件名> 从文件读取选项和文件名

在详细介绍javac命令之前,先看看这个classpath是什么

classpath是什么

在dos下编译java程序,就要用到classpath这个概念,尤其是在没有设置环境变量的时候。classpath就是存放.class等编译后文件的路径。

javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指定的路径下查找引用类。

(1).绝对路径:javac -classpath c:/junit3.8.1/junit.jar Xxx.java
(2).相对路径:javac -classpath ../junit3.8.1/Junit.javr Xxx.java
(3).系统变量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系统变量CLASSPATH的值进行查找,这里假设Junit.jar的路径就包含在CLASSPATH系统变量中)

IDE中的classpath

对于一个普通的Java web 项目,一般有这样的 配置

1 WEB-INF/classes, lib 才是classpath,WEB-INF/ 是资源目录, 客户端不能直接访问。

2、WEB-INF/classes目录存放 src 目录java文件编译之后的class文件,xml、properties等资源配置文件,这是一个定位资源的入口。

3、引用classpath路径下的文件,只需在文件名前加classpath:

classpath:applicationContext-*.xml

classpath:context/conf/controller.xml

4、lib和classes同属classpath,两者的访问优先级为: lib>classes。

5、classpath 和 classpath* 区别:

classpath:只会到你的class路径中查找找文件;

classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。

作者:Harries Blog™
追心中的海,逐世界的梦
原文地址:Java基础14:离开IDE,使用java和javac构建项目, 感谢原作者分享。

发表评论