zoukankan      html  css  js  c++  java
  • 使用javac编译工程

    今天看到有一个利用原始的javac编译整个Java项目的专栏,然后就动手对使用javac来编译java工程进行了一下研究,一直都是使用IDE来搞java,对这些编译工程的细节还不是很了解,遂纪录之。

    工程目录结构如下:

    App.java的内容如下:

    package  com.oops;
    
    public  class  App  {
        public  static  void main(String[] args)  {
            Orz  orz = new  Orz();
            orz.sayOops();
            orz.sayOrz();
        }
    }
    

    Orz.java的内容如下:

    package  com.oops;
    
    import  org.apache.logging.log4j.LogManager;
    import  org.apache.logging.log4j.Logger;
    
    public  class  Orz  {
        Logger LOGGER = LogManager.getLogger();
    
        public  void sayOrz()  {
            LOGGER.info("orz...");
        }
    
        public  void sayOops()  {
            LOGGER.info("orz...");
        }
    }
    

    这个项目引入了两个外部的jar包。
    构建如下:

    1. 首先创建一个目录用于存放生成的class文件。
    2. 进入工程目录,然后运行编译命令,其中-d 参数指定编译结果的输出目录,-cp参数用于指定搜索引入外部包的路径,最后是需要编译的文件。
    javac -d classes -cp libcore.jar;libapi.jar srccomoops*.java
    
    1. 进入classes目录,运行生成的class文件。注意,运行class文件时需要注意输入class的全限定名。如我们这里生成了一个叫做App.class的类文件,由于我们的App.java是在com.oops包下面的,所以运行的时候我们应该运行com.oops.App,同时还需要指定classpath。
    java -cp .;..libapi.jar;..libcore.jar com.oops.App
    
    1. 在工程目录下面新建一个MANIFEST.MF文件。指定入口类,classpath。
    Manifest-Version: 1.0  
    Main-Class: com.oops.App
    Class-Path: lib/api.jar lib/core.jar
    
    1. 进入classes目录,打包jar文件。
    jar -cvfm demo.jar ..MANIFEST.MF *
    
    1. 在classes目录下面,运行jar包。
     java -jar demo.jar
    
    1. 接下来需要学习一下使用ant和maven等构建工具了。

    参考

    JAR打包的误区:第三方包的嵌套打包
    利用原始的javac编译整个Java项目
    javac
    JAVAC 命令详解

  • 相关阅读:
    物理数据库设计
    物理数据库设计
    NHibernate 帮助类(单例实际运用)
    HttpContext请求上下文对象
    SqlDataReader类
    在你不懂怎么做的时候
    System.Object 基类
    逻辑数据库设计
    逻辑数据库设计
    NHibernate使用MemCache二级缓存
  • 原文地址:https://www.cnblogs.com/ZiYangZhou/p/8536828.html
Copyright © 2011-2022 走看看