zoukankan      html  css  js  c++  java
  • java 学习笔记

    1、java 的工作方式、包、jar 存档文件和部署

    • 最简单的,源代码—>编译器—>输出—>java 虚拟机(JVM)。
    javac Party.java
    java Party
    • 将源代码和类文件分离,源代码(.java)存储在source目录下,输出(.class)产生在 classes 目录。
    cd MyProject/source
    javac -d ../classes *.java
    cd MyProject/classes
    java MyApp
    • 将程序包进 JAR,JAR 就是 JavaARchive,这种文件是个 pkzip 格式的文件,它能把一组类文件包装起来,交付时只需要一个 JAR 文件。可执行的 JAR 代表用户不需把文件抽出来就能运行。程序可以在类文件保存在 JAR 的情况下执行。秘诀在于创建出 manifest 文件,它会带有 JAR 的信息,告诉 Java 虚拟机哪个类含有 main() 这个方法。
    cd MyProject/classes
    jar -cvmf manifest.txt apptest.jar *.class
    jar -cvmf manifest.txt apptest.jar MyApp.class

    其中 manifest.txt 文件放在 classes 目录,内容如下:

    Main-Class: MyApp

    Java 虚拟机能够从 JAR 中载入类,并调用该类的 main() 方法。事实上,整个应用程序都可以包在 JAR 中。一旦 main() 方法开始执行,Java 虚拟机就不会在乎类是从哪来的,只要能够找到就行。其中一个来源就是 classpath 指定位置的所有 JAR 文件。如果看到某个 JAR,则 Java 虚拟机就会在需要类的时候查询此 JAR。

    根据操作系统如何动态设定,有可能直接双击 JAR 就可以开始执行,Windows 与 Mac OS X大致是这样。可以通过点选 JAR 并要求 OS 以“Open with...”这一类的方式来打开。

    • 把类包进包中

    把类包进包中可以减少与其他类产生命名冲突的机会。Sun 建议包命名加上你所取得的域名称。

    首先要在类中加入包指令

    package com.headfirstjava;
    
    import javax.swing.*;
    
    public class PackageExercise {
          //
    }

    然后设定相应对的目录结构,只是把包命令加入源文件是不够的,类不会真的被加入包中,除非类也在相对应的目录结构中。如果类名称是 com.headfirstjava.PackageExercise ,则你必须把 PackageExercise 源文件放在 headfirstjava 的目录下,此目录又在 com 目录下。

    加上 -d (directory) 选项来编译,如编译 com.headfirstjava 这个包的所有 .java 文件。加上 -d 的编译操作会让编译器在遇到 classes 目录结构尚未建立时主动做出来。

    cd MyProject/source
    javac -d ../classes com/headfirstjava/*.java

    执行程序,必须指定完整的名称,Java 虚拟机会看得懂并找寻当前目录下的 com 目录,其下应该有 headfirstjava 目录,那里应该能找到 class,class 在其他位置都无法运行。

    cd MyProject/classes
    java com.headfirstjava.PackageExercise
    • 以包创建可执行的 JAR

    首先确定所有的类文件都放在 class 目录下正确对应的包结构中,然后创建 mainfest.txt 文件来描述哪个类带有 main(),以及确认有使用完整的类名称。在 mainfest.txt 文件写入下面一行,然后把 mainfest.txt 放在 classes 目录下。

    Main-Class: com.headfirstjava.PackageExercise

    执行 jar 工具来创建带有目录结构与 mainfest 的 JAR 文件,只要从 com 开始就行,其下整个包的类都会被包进去 JAR。

    2、

    参考资料:

    1. Kathy Sierra / Bert Bates. 《Head First Java》

  • 相关阅读:
    Servlet 易错点和注意点
    Spring 完成自动注入(autowire)
    Java 定时调度Timer&Quartz
    常用Linux命令杂记
    Spring 使用AOP——基于注解配置
    Spring 使用AOP——xml配置
    Spring 使用纯注解方式完成IoC
    Spring 简单使用IoC与DI——XML配置
    让多个HTML页面 使用 同一段HTML代码
    Feture、ListenableFuture、ComplatableFuture
  • 原文地址:https://www.cnblogs.com/NaughtyBaby/p/4638322.html
Copyright © 2011-2022 走看看