javac和java是sun提供的编译java文件和执行class文件的命令工具,其经过ant包装之后,可以说是很强大很方便,然后有时候写的小程序去用IDE编译,运行,显得的有些庞大,轻便轻盈的办法当然是用javac与java了。
在看下面的描述之前,请参考其他方法安装好java环境,配置好java环境变量(记得CLASSPATH最前面是 .;),
下面的示例文件纯为显示所写,基本上没什么用途,其中jdk版本——java version "1.6.0_12"。
1.单文件编译、运行
用javac和java编译运行单文件是很容易的:
假如我们有Hello.java
#Hello.java
view plaincopy to clipboardprint?
public class Hello{
public static void main(String []args){
System.out.println("Welcome to Java!");
}
}
public class Hello{
public static void main(String []args){
System.out.println("Welcome to Java!");
}
}
cmd到该文件所在目录,执行
javac Hello.java
java Hello
就ok了。
2.多文件编译,包引用文件编译、运行
假如我们有如下目录结构
------src
------com
------eho
-------util
---------CMath.java
---------CTime.java
-------test
---------Test.java
------out
其中src目录是java源代码目录,out是用来存放编译之后的class文件的目录,在编译java文件之前需要手动建立存放class文件的父文件夹,在这里我们建立了out文件夹来存放。
文件
//CMath.java
view plaincopy to clipboardprint?
package com.eho.util;
public class CMath {
public static int add(int a, int b){
return a + b;
}
public static int div(int a, int b){
return a/b;
}
}
package com.eho.util;
public class CMath {
public static int add(int a, int b){
return a + b;
}
public static int div(int a, int b){
return a/b;
}
}
//CTime.java
view plaincopy to clipboardprint?
package com.eho.util;
import java.util.*;
import java.text.*;
public class CTime {
public static String strDatetime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date());
}
}
package com.eho.util;
import java.util.*;
import java.text.*;
public class CTime {
public static String strDatetime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date());
}
}
//Test.java
view plaincopy to clipboardprint?
package com.eho.test;
import com.eho.util.*;
public class Test {
public static void main(String[] args) {
// test
int a = 4, b =2;
int sum = CMath.add(a, b);
System.out.println("a + b = " + sum);
int div = CMath.div(a, b);
System.out.println("a / b = " + div);
// print now
System.out.println(CTime.strDatetime());
}
}
package com.eho.test;
import com.eho.util.*;
public class Test {
public static void main(String[] args) {
// test
int a = 4, b =2;
int sum = CMath.add(a, b);
System.out.println("a + b = " + sum);
int div = CMath.div(a, b);
System.out.println("a / b = " + div);
// print now
System.out.println(CTime.strDatetime());
}
}
编译及运行步骤:
a:cmd到src所在的目录
b:执行命令:javac -d ..\out com\eho\util\*.java (多文件编译)
c:执行命令:javac -d ..\out com\eho\test\*.java (编译包引用文件)
d:执行命令:java -cp ..\out com.eho.test.Test (运行包引用文件)
然后看到输出结果:
a + b = 6
a / b = 2
2009-03-03 23:08:08
还有一种情况就是如果只对一个有报名的类进行编译,一定要在liunx目录下建立对应的包名路径,然后编译的时候可以是: javac com.xxx.xxxx.xxx.java 或 直接在包名下进行:javac xxx.java 但是执行命令的时候,需要在和包名同级目录执行:java com.xxx.xxx.xxx.编译文件,在编译文件下不能进行执行,会找不到相关类。
如果java类文件执行的时候报warning: unmappable character for encoding ASCII,说明文件有中文,需要制定文件编码格式:命令为:javac -encoding utf-8 file_name.java
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hong201/archive/2009/03/03/3954603.aspx
分享到:
相关推荐
在DOS环境下使用`javac`编译与`java`执行多个包下的`.java`文件是一项常见的Java开发任务。这通常涉及到对项目结构的理解、命令行操作以及掌握Java的编译和运行流程。下面我们将详细讲解这个过程。 首先,我们需要...
以下是对`javac`源代码及Java编译步骤的详细解析。 1. **词法分析**:编译的第一步是读取源代码文件,并将其分解为一个个最小的有意义单元——词法单元或标记。这些标记包括关键字、标识符、操作符、常量和分隔符等...
- **作用**:将资源文件(如图片、布局文件等)打包成一个单独的资源文件包,方便后续合并到最终的APK中。 6. **用apkbuilder.bat打包资源和classes.dex文件,生成unsigned.apk** - **工具介绍**:apkbuilder是一...
Java Class文件是Java程序经过编译后的二进制表示形式,它是Java虚拟机(JVM)执行的基础。本文将深入探讨Java类文件的结构、编译过程以及如何使用提供的工具进行查看。 一、Java类文件结构 Java源代码(.java文件...
- 当编译一个包含包声明的类时,编译后的 `.class` 文件应存放在对应包的目录结构中。 **包的使用示例**: ```java package A; public class Hello { public static void main(String[] args) { System.out....
1. **编译时无需关注包结构**,无论使用哪种方法,只要让`javac`命令找到源文件即可。可以通过相对或绝对路径为`javac`提供源文件的位置信息。 2. **关于`classpath`的理解**,`-cp`或`-classpath`选项以及`...
`<target>`标签用于定义一系列要执行的任务,`<taskdef>`用于引入自定义任务,`<property>`用于设置属性值,`<copy>`用于复制文件,`<jar>`用于创建JAR文件,`<javac>`用于编译Java源代码,`<delete>`用于删除文件或...
`<mkdir>`任务用于创建目录,`<javac>`任务用于编译Java源代码,`<jar>`任务则用于创建`JAR`文件。 在`<jar>`任务中,`destfile`属性指定`JAR`文件的路径,`basedir`属性指定了包含类文件的目录,这些类文件会被...
在Java编程语言中,"编译好的CLASS文件"是指经过Java编译器(javac)处理的源代码(.java文件)所生成的目标文件。这些文件以二进制格式存储,可以直接由Java虚拟机(JVM)执行。CLASS文件包含了Java类或接口的字节...
- **编译路径**:在编译一个包含包的类时,如`A`类,如果它位于包`edu.main`中,并且引用了`edu.ustc`包下的`B`类,那么`A.java`文件应位于`<base_dir>/edu/main`目录下。此时,编译`A.java`需要显式指定其完整路径...
### 安卓反编译dex文件格式实例分析 #### 第一部分:创造一个可供分析的Hello.dex ##### 测试环境 为了进行本次实验,我们需要搭建一个可靠的测试环境。本实验使用了以下配置: - **操作系统**: Ubuntu 12.04 64...
深入理解javac的源代码对于Java程序员来说,不仅能帮助理解编译过程,还能提升编程技能和优化代码的能力。在本文中,我们将探讨javac的工作原理、关键组件以及其在Java开发中的重要性。 一、javac的基本工作流程 1...
- **javac**:Java的官方编译器,负责将.java文件编译成.class字节码文件。 - **src**:在Java开发中,src通常代表源代码目录,存放未编译的Java源文件。 - **源代码**:程序的原始文本形式,程序员可以直接理解和...
当Java源代码(.java文件)通过Javac编译器编译后,会生成字节码文件,即.class文件。这些文件包含Java虚拟机(JVM)可执行的指令,但并不直接包含源代码。因此,如果没有源代码,就无法直接阅读和理解类文件中的逻辑。 ...
如果希望编译后的`.class`文件被放置在一个与包结构相匹配的目录结构中,可以使用`-d`选项来指定输出目录: ```bash javac -d /home/tarena/a/b /home/tarena/Test.java ``` 执行此命令后,`Test.class`文件...
这条命令告诉`javac`编译器将生成的字节码(`.class`文件)放在`classes`目录下,按照源代码的包结构组织。 2. 编译`HelloWorld.java`: ``` javac -d classes -cp classes src\org\xalg\test\HelloWorld.java ...
`javac.jar` 是 OpenJDK 中 `javac` 编译器的源码包,它揭示了 Java 编译过程的内部工作原理,对于学习 Java 编译器的工作机制、优化代码性能以及进行自定义编译器开发具有重要意义。 在 OpenJDK 的 `javac1.7` ...
其中,Java代码由JDK的javac编译成.class文件,再通过Dex工具转化为.dex文件,这是Android设备上运行的格式。 2. **资源打包**:资源文件(如布局、图片、字符串等)被AAPT(Android Asset Packaging Tool)处理并...
Java源代码在被Javac编译器处理后,会转化为一种中间格式,即字节码(.class文件),这种格式与平台无关,可以在任何支持Java的环境中运行。字节码是Java虚拟机(JVM)理解和执行的基础。 然后,我们引出“反编译”...