java web src目录结构-jsp web java web
编译源代码
使用Java编译器javac命令来编译源代码并将编译的代码保存在C: \Java9Revealed\mods目录下。 javac命令位于JDK_HOME\bin目录中。 以下命令编译源代码。 命令输入是一行,而不是三行:
C:\Java9Revealed>javac -d mods --module-source-path src src\com.jdojo.intro\module-info.java src\com.jdojo.intro\com\jdojo\intro\Welcome.java
注意,运行此命令时,C:\Java9Revealed是当前目录。 -d mods选项告诉Java编译器将所有编译的类文件保存到mods目录下。 注意,正在从C:\Java9revealed目录运行命令,因此命令中的mods目录表示C:\Java9Revealed\mods目录。 如果需要java web src目录结构,可以用-d C:\Java9Revealed\mods替换此选项。
第二个选项--module-source-path src指定src目录的子目录包含多个模块的源代码java web src目录结构,其中每个子目录名称与包含源代码的子目录的模块名称相同 。 这个选项有一些含义:
javac命令的最后两个参数是源文件 —— 一个是模块声明,一个Welcome类。 如果javac命令成功运行,则在C:\Java9Revealed\mods\com.jdojo.intro目录下生成以下两个类文件:
你完成了源代码的编译。
以下命令使用JDK 9之前存在的样式来编译com.jdojo.intro模块的源代码。它仅使用-d选项,该选项指定放置编译的类文件的位置。
C:\Java9Revealed>javac -d mods\com.jdojo.intro src\com.jdojo.intro\module-info.java src\com.jdojo.intro\com\jdojo\intro\Welcome.java
第二个命令的输出与上一个命令的输出是相同的。 但是,如果要在一个命令中编译多个模块的源代码,并将编译的代码放在特定于模块的目录中,则不起作用。
使用javac的--module-version选项,可以指定正在编译的模块的版本。 模块版本保存在module-info.class文件中。 以下命令将生成与上一个命令相同的一组编译文件,还在module-info.class文件中保存了1.0作为模块版本:
C:\Java9Revealed>javac -d mods\com.jdojo.intro --module-version 1.0 src\com.jdojo.intro\module-info.java src\com.jdojo.intro\com\jdojo\intro\Welcome.java
如何确认javac命令在module-info.class中保存了模块版本? 您可以使用javap命令来解析Java字节码。 如果指定了一个module-info.class的路径,那么javap命令会在模块名称之后打印模块的定义,其中包含模块的版本(如果存在)。 如果模块版本存在,则打印的模块名称的格式为moduleName @ moduleVersion。 运行以下命令以验证上一个命令记录的模块名称:
C:\Java9Revealed>javap mods\com.jdojo.intro\module-info.class Compiled from "module-info.java"module com.jdojo.intro@1.0 { requires java.base; }
在JDK 9中增强了jar工具。它允许在创建模块化JAR包时时指定模块版本。
如果要编译多个模块,则需要将每个源文件指定为javac命令的参数。 这里提供一个Windows和UNIX的快捷命令来一次性编译所有的模块。 在Windows中的一行中使用以下命令:
C:\Java9Revealed>FOR /F "tokens=1 delims=" %A in ('dir src\*.java /S /B') do javac -d mods --module-source-path src %A
该命令循环遍历src目录下的所有".java"文件,并一次编译一个Java文件。
如果将命令保存在批处理文件中并运行批处理文件来编译所有源文件,则需要将%A替换为%%A。
该命令的UNIX系统中等价于如下命令:
$ javac -d mods --module-source-path src $(find src -name "*.java")