用惯了IDE,突然发现对于javajavac命令只会基础的单文件编译运行,因此特地研究了一下多文件依赖编译运行。(顺便一提,stackoverflow真是个好地方)

环境:Java8 Windows10

单文件编译

带包名的java类编译

现在我们对 HelloWorld.java 做些小小的修改代码如下

package lib;public class HelloWorld
{public static void main (String []args) {System.out.println ("Hello World!");}
}

这种情况,有两种方式:

第一种就是直接用 -d 参数编译。

编译命令  javac -d . HelloWorld.java  切记  .  代表当前目录左右空格不能丢。编译后编译器会帮我们在当前目录下自动生成一个lib文件夹,这和我们的包名一致。如果包名很长如: com.shark.test 编译器就会生成 ./com/shark/test 三级目录,在最里层即 test目录下就是我们的class文件。

运行命令 java lib.HelloWorld 运行时需带上完整包名+类名

第二种方式是手动创建一个 lib 文件夹将 HelloWorld.java 放进去,(这里的lib 取决于包名,若多层包名需创建多级目录)

编译命令:javac ./lib/HelloWorld.java 运行命令为:java lib.HelloWorld



引用第三方jar包的编译

在这里我引用的是mysql的jar包。代码如下

import java.sql.ResultSet;
import java.sql.SQLException;import com.mysql.jdbc.Driver;public class Test
{private ResultSet rset;private static Driver driver;public static void main (String args [] )   throws SQLException {driver  = new Driver();System.out.println ("HelloWorld!!");System.out.println (driver);}
}

编译命令   javac -cp mysql-connector-java-5.1.7-bin.jar Test.java  

执行命令  java -Djava.ext.dirs=./ Test    或是   java -cp .;mysql-connector-java-5.1.7-bin.jar Test

有包名:

编译命令 : javac -d . -cp mysql-connector-java-5.1.7-bin.jar Test.java  

执行命令  java -Djava.ext.dirs=./ Test   

-cp 指定第三方jar包的位置

多文件编译

同级目录下

一下是准备工作,在当前目录下创建 HelloWorld.java 和 Main.java文件内容分别如下

public class HelloWorld
{public String getMsg (){return "HelloWorld!";}
}
public class Main
{public static void main (String []args){HelloWorld hw = new HelloWorld ();System.out.println (hw.getMsg ());}
}

在cmd中查看目录如下:

同级目录下java和javac都可以自动识别,这里很简单,编译命令为   javac HelloWorld.java Main.java 运行命令为  java Main



非同级目录

当前目录下Main.java

import lib.HelloWorld;public class Main
{public static void main (String []args){HelloWorld hw = new HelloWorld ();System.out.println (hw.getMsg ());}
}

在当前目录下创建一个目录lib 并在lib下创建一个文件 HelloWorld.java


package lib;public class HelloWorld
{public String getMsg (){return "Hello World!";}
}

编译命令  javac Main.java ./lib/HelloWorld.java 运行命令为 java Main



多谢stackoverflow的大佬,下面附上相关链接 
https://stackoverflow.com/questions/13738343/import-class-file-in-java?rq=1
https://stackoverflow.com/questions/44458126/use-javac-and-java-to-excute-class-file-with-extern-classes-under-other-director

用命令行编译java文件相关推荐

  1. Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

  2. java 手动编译打包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

  3. java手动编译jar包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

    一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...

  4. java文件编译为class文件需要键入什么命令_cmd命令行 编译Java 文件

    [问题引入] 很多时候,需要用到命令行来进行Java文件的编译.在用习惯了IDE 可能会不清楚如何在cmd命令行窗口进行编译,简单的都还好,带有包路径的可能会让很多人觉得有点小头疼.最近试了一下,发现 ...

  5. java 命令行 编译 jar文件_用命令行编译java并生成可执行的jar包

    如果想用java编写一个可视化小程序,碰巧手头没有IDE的话,可以用命令行来完成编译.打包等工作. 拿自己编写的"java记事本"为例,介绍一下这个过程: 1.编写源代码. 编写源 ...

  6. 怎么用命令行运行.java文件

    第一步 假如在e盘里有个文件夹名为Java,在Java文件夹里有一个事先写好的.java程序,如下: 第二步 打开命令行窗口(Window+R),输入cmd,点确定,如下: 第三步 转到HelloWo ...

  7. flex的mxmlc命令行编译as3文件成swf

    今天想要了解一下as3直接编译成为swf通过命令行的方式进行编译,找到一篇文章:http://edutechwiki.unige.ch/en/AS3_Compiling_a_program  里面介绍 ...

  8. 用命令行编译java并生成可执行的jar包

    1.编写源代码 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: package test;import jav ...

  9. 命令行编译java项目_命令行编译运行java工程(转)

    平时建立Java工程都是借助eclipse或intellij这些ide编辑器来构建,对于java工程的实际编译执行原理,从未了解过.作为一个曾经的C++程序员,对于源码刨根问底的那份执着从未丢过.于是 ...

最新文章

  1. 转载:薪资谈判应该避免的7个错误
  2. Socket的三个关联函数
  3. stm32官方例程在哪找_正点原子Linux第十一章模仿STM32驱动开发格式实验
  4. ACM入门之【搜索】
  5. 记录您的里程和社区运行情况:Java EE 7真实体验
  6. 思科 GNS3 配置 NAT 端口映射
  7. python_day9 回调函数
  8. mybatis执行opensession时空指针异常_关于 Mybatis 缓存的那点事儿,你知道吗?
  9. Android Studio(十):添加assets目录
  10. python飞机大战源码以及素材资源
  11. 2020中青杯A题集成电路通道布线数学建模全过程论文及程序
  12. 《道德经》——《老子道德经》
  13. 新手建站推广完美教程(重点推荐)
  14. 用Redis给Java做优惠卷过期
  15. rain、rainy、raining的区别
  16. 汇编(二)——ARM数据处理指令——算术运算、数据传送
  17. 20. Linux提权:从入门到放弃
  18. 网上英语听力测试的软件,初中英语听力测试
  19. [设计模式] Pipeline 设计模式
  20. Matlab与FPGA图像处理系列——基于FPGA的实时边缘检测系统设计,sobel边缘检测流水线实现

热门文章

  1. ubootenv工具fw_printenv及配置文件fw_env.config
  2. 【华为重启门】华为/荣耀手机一直自动重启原因解决方案(荣耀V10)
  3. python实现Dice系数
  4. project英文版
  5. 字符串匹配KMP算法及其时间复杂度分析
  6. 深入浅出HTTPS工作原理 1
  7. 谁能做文字版人生模拟器
  8. linux的文本处理
  9. html5复合选择器,传智播客解读Css基本选择器与复合选择器
  10. 2022年意识科学十大主题焦点与研究进展