ubuntu下使用java、javac命令行编译工程

一、java和javac命令行

(1)javac命令行

javac.exe用于编译java源文件,生成.class文件

语法:javac  [option]  source

常用的[option]选项:

A、-classpath  <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是错啦搜索文件)),使用后

       会覆盖CLASSPATH的设定

B、-d  <路径> :指定源文件编译后生成.class文件的存放位置


(2)java命令行

java.exe用于运行javac编译后生成的.class文件

语法:java   [option]  classname  [arguments]

常用的[option]选项:

A、-classpath  <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是错啦搜索文件)),使用后

       会覆盖CLASSPATH的设定

B、[arguments]:传递给main函数的参数


二、例子

(1)单独一个java程序

Demo.java

public class Demo{
    public static void main(String args[]){
               System.out.println("This is a test");
 }
}

javac  Demo.java-----------在当前目录下生成Demo.class文件

java Demo-------------------执行Demo.class


也可以通过-d选项指定生成.class文件的位置,如:

javac -d  ..  Demo.java ,则就会在当前目录的上一级目录上生成Demo.class文件,那么执行的时候,就要指定class的路径

java  -cp  ..  Demo,表示让java在上一级目录搜索类文件


(2)一个带包的java程序

Demo.java

package com.demo;
public class Demo{
    public static void main(String args[]){
               System.out.println("This is a test");
 }
}
同样,现编译文件:

javac  Demo.java-----------在当前目录下生成Demo.class文件

java Demo-------------------执行Demo.class


也可以通过-d选项指定生成.class文件的位置,如:

javac -d .  Demo.java-----------按照com.demo的包路径保存.class文件

则会在当前目录下生成一个com/demo/Demo.class文件,如下图:

那么在执行的时候,也要指定类文件的路径:

javac  com/demo/Demo或者javac   com.demo.Demo


(3)同一个包下,一个类调用另一个类

Tom.java

package com.demo;
public class Tom{
    public String  getMyname(){
    return "This is Tom!";
}
}

Friend.java

package com.demo;

import com.demo.Tom;

public class Friend{
    public static void main(String args[]){
        Tom tom = new Tom();
        System.out.println("hello "+tom.getMyname());
}
}
由于Friend类条用了Tom类,首先要现编译Tom.java:javac -d  .   Tom.java,然会会按照包结构生成com/demo/Tom.class文件。

接下来编译Friend.java文件:javac  -cp .  -d .  Friend.java,javac会根据,import com.demo.Tom;这个路径到 -cp 指示的 "."当前目录下寻找,然后按照包结构生成com/demo/Friend.class,见下图:

运行:java   com.demo.Friend


(4)一个包下的类条用另一个包下的类


Tom.java

package com.demo1;
public class Tom{
    public String  getMyname(){
    return "This is Tom!";
}
}

Friend.java

package com.demo2;

import com.demo1.Tom;

public class Friend{
    public static void main(String args[]){
        Tom tom = new Tom();
        System.out.println("hello "+tom.getMyname());
}
}
还是一样,现编译Tom.java,javac -d .  Tom.java,生成com/demo1/Tom.class;

然后编译Friend.java,javac   -cp .  -d  .   Friend.java,生成com/demo2/Friend.class;


运行:java  com.demo2.Friend;


(5)更接近项目的java工程

一般,一个工程下面都会有lib(引入的必要jar包),classes(保存.class文件),src(.java源代码)三个文件夹。

java文件夹的目录结构如下,文件之间的关系是Client.java调用了DemoService.java的方法;ServerImpl.java调用了DemoService.java的方法;Server.java调用了ServerImpl.java和DemoService.java的方法;

下面的文件,我只显示他们引用的包和类。

src/com/client/Client.java:

package com.client;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;

import com.demo.DemoService;
 

public class Client {
	
	.................................................................................

}
src/com/demo/DemoService.java:
/**
 * Autogenerated by Thrift Compiler (0.9.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */

package com.demo;
import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;

import org.apache.thrift.scheme.TupleScheme;
import org.apache.thrift.protocol.TTupleProtocol;
import org.apache.thrift.protocol.TProtocolException;
import org.apache.thrift.EncodingUtils;
import org.apache.thrift.TException;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DemoService {
.................................................................
}
src/com/server/Server.java:

package com.server;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;

import com.demo.DemoService;
import com.server.ServerImpl;

public class Server {
	
..................................................................................

}
 make.sh脚本如下: 

#!/bin/bash

# Get current position
TOP_DIR=$(pwd)

# Add all necessary jars
LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar:lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar:lib/junit-4.4.jar:lib/libthrift-1.0.0.jar:lib/log4j-1.2.14.jar:lib/servlet-api-2.5.jar:lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar

#compile java file
javac -cp $LIBPATH                  src/com/demo/DemoService.java  -d ./classes/. 
javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/ServerImpl.java -d ./classes/.
javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/Server.java     -d ./classes/.
javac -cp $TOP_DIR/classes:$LIBPATH src/com/client/Client.java     -d ./classes/.

run.sh脚本如下:

#!/bin/bash

#Get client/server
SIDE=$1

# Get current position
TOP_DIR=$(pwd)

# Add all necessary jars
LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar:lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar:lib/junit-4.4.jar:lib/libthrift-1.0.0.jar:lib/log4j-1.2.14.jar:lib/servlet-api-2.5.jar:lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar

#run program
if [ $SIDE == "server" ];then
    java -cp $TOP_DIR/classes:$LIBPATH  com/server/Server
else
    java -cp $TOP_DIR/classes:$LIBPATH  com/client/Client
fi

进入thriftDemo文件夹下,执行./make.sh脚本,在classes文件夹下生成的文件如下:



参考:wenku.baidu.com/view/f4c19dbc65ce0508763213c6.html







  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Snap是Ubuntu的一种包管理器,可以用来安装和管理软件包。要在Ubuntu使用Snap搭建Java开发环境,请遵循以下步骤: 1. 安装Snap 如果您的系统上还没有安装Snap,您可以使用以下命令安装Snap: ``` sudo apt update sudo apt install snapd ``` 2. 安装Java 使用Snap可以很容易地安装Java。要安装Java,请使用以下命令: ``` sudo snap install java ``` 3. 配置Java环境变量 安装完Java后,您需要设置Java环境变量。打开终端并使用以下命令: ``` sudo nano /etc/environment ``` 将以下行添加到文件末尾,其中“/snap/java/current”是Java的安装路径: ``` JAVA_HOME=/snap/java/current ``` 按Ctrl+X,然后按Y保存并退出nano。 4. 安装Java开发工具 现在您已经安装了Java和设置了Java环境变量,可以安装Java开发工具。使用以下命令安装Eclipse: ``` sudo snap install eclipse --classic ``` 使用以下命令安装IntelliJ IDEA: ``` sudo snap install intellij-idea-community --classic ``` 现在您已经成功使用Snap搭建了Java开发环境。您可以使用Eclipse或IntelliJ IDEA开始编写Java代码了。 ### 回答2: 在Ubuntu系统上使用snap搭建Java开发环境非常简单。首先,确保您的系统已连接到互联网。 首先,打开终端。您可以使用Ctrl + Alt + T键组合来快速打开终端。 然后,输入以下命令来安装Java(如果尚未安装): ``` sudo snap install openjdk ``` 该命令将下载并安装最新版本的OpenJDK。 然后,您可以使用以下命令来确认Java是否成功安装: ``` java -version ``` 您将看到Java的版本信息。 接下来,您可能还需要安装其他Java开发所需的软件包,例如Maven或Gradle。您可以使用以下命令来安装Maven: ``` sudo snap install --classic maven ``` 或使用以下命令来安装Gradle: ``` sudo snap install --classic gradle ``` 这些命令将下载并安装最新版本的Maven或Gradle。 一旦这些步骤完成,您就可以开始使用Java进行开发。您可以使用任何喜欢的文本编辑器编写Java代码,并使用命令行工具(如javacjava命令)来编译和运行代码。 总结一下,使用Snap在Ubuntu系统上搭建Java开发环境非常简单。只需几个命令即可安装所需的软件包,并开始使用Java进行开发。 ### 回答3: 在Ubuntu系统中,可以使用snap来搭建Java开发环境。Snap是一种软件打包技术,它可以帮助用户以更加简便和安全的方式安装和管理应用程序。 首先,打开终端并更新系统软件源,使用以下命令: sudo apt update sudo apt upgrade 接下来,安装snap包管理器,使用以下命令: sudo apt install snapd 然后,通过以下命令安装OpenJDK(Java开发工具包): sudo snap install --classic java 此命令将安装最新版本的OpenJDK。安装完成后,即可在系统中使用Java开发环境。 如果需要安装其他Java开发工具,可以使用类似命令的方式进行安装。例如,安装Maven(Java项目管理工具),可以使用以下命令: sudo snap install --classic maven 类似地,可以使用snap安装其他常用的Java开发工具,如Gradle(构建工具)和IntelliJ IDEA(集成开发环境)等。只需使用相应的命令进行安装即可。 安装完成后,可以通过以下命令来查看已安装的snap软件包: snap list 要卸载某个已安装的snap软件包,可以使用以下命令: sudo snap remove 软件包名称 总之,使用snap可以方便地搭建Java开发环境,并且可以很容易地安装和管理各种Java开发工具。通过上述步骤,您可以在Ubuntu系统上快速搭建Java开发环境并开始编写Java应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值