AWS Cloud9 不再提供給新客戶。的現有客戶 AWS Cloud9 可以繼續正常使用服務。進一步了解
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的 Java 教學課程 AWS Cloud9
重要
如果您使用的 AWS Cloud9 開發環境由具有 2 GiB 或更多記憶體的EC2執行個體支援,我們建議您啟用增強型 Java 支援。這可以提供各種生產力功能的存取權,例如程式碼完成、錯誤檢查、內容特定動作以及除錯選項 (如中斷點和逐步執行)。
如需詳細資訊,請參閱增強對 Java 開發的支援。
本教學課程可讓您在 AWS Cloud9 開發環境中執行一些 Java 程式碼。
遵循本教學課程並建立此範例可能會導致您的帳戶 AWS 產生費用。這包括 Amazon EC2和 Amazon S3 等服務的可能費用。如需詳細資訊,請參閱 Amazon EC2 Pricing
主題
必要條件
在您使用此範例前,請務必確認您的設定符合下列要求:
-
您必須具有現有的 AWS Cloud9 EC2開發環境。此範例假設您已擁有連線至執行 Amazon Linux 或 的 Amazon EC2執行個體EC2的環境 Ubuntu 伺服器。如果您有不同類型的環境或作業系統,您可能需要依照此範例的說明來設定相關工具。如需詳細資訊,請參閱在 中建立環境 AWS Cloud9。
-
您已經開啟現有環境的 AWS Cloud9 IDE。當您開啟環境時,請在 Web 瀏覽器中 AWS Cloud9 開啟該環境IDE的 。如需詳細資訊,請參閱在 AWS Cloud9 中開啟環境。
步驟 1:安裝必要工具
在此步驟中,您可以在開發環境中安裝一組 Java AWS Cloud9 開發工具。如果您已在環境中安裝一組 Java 開發工具,例如 Oracle JDK或 OpenJDK,您可以跳至 步驟 2:新增程式碼。此範例使用 OpenJDK 8 開發,您可以完成下列程序,在環境中安裝 。
-
確認是否已安裝 OpenJDK 8。若要這麼做,請在 的終端機工作階段中 AWS Cloud9 IDE,使用
-version
選項執行 Java Runner 的命令列版本。(若要啟動新終端機工作階段,請在選單列上,選擇 Window (視窗)、New Terminal (新增終端機)。java -version
依據上述命令的輸出,執行以下操作之一:
-
如果輸出指出找不到
java
命令,請繼續執行此程序中的步驟 2,以安裝 OpenJDK 8。 -
如果輸出包含以
Java(TM)
、Java Runtime Environment
、Java SE
、J2SE
或 開頭的值Java2
,JDK則 Open 不會安裝,也不會設定為預設 Java 開發工具集。繼續此程序中的步驟 2 以安裝 OpenJDK 8,然後使用 OpenJDK 8 切換到 。 -
如果輸出包含以
java version 1.8
和OpenJDK
開頭的值,請直接跳到 步驟 2:新增程式碼。此範例已正確安裝 OpenJDK 8。 -
如果輸出包含
java version
小於1.8
且值以 開頭OpenJDK
,請繼續此程序中的步驟 2,將已安裝的 OpenJDK 版本升級至 OpenJDK 8。
-
-
確定已安裝最新的安全性更新和錯誤修正。若要這樣做,請以
update
命令執行 yum 工具 (適用於 Amazon Linux) 或 apt 工具 (適用於 Ubuntu Server)。針對 Amazon Linux:
sudo yum -y update
針對 Ubuntu Server:
sudo apt update
-
安裝 OpenJDK 8。若要執行此操作,請使用
install
命令執行 yum 工具 (適用於 Amazon Linux) 或 apt 工具 (適用於 Ubuntu Server),指定 OpenJDK 8 套件。針對 Amazon Linux:
sudo yum -y install java-1.8.0-openjdk-devel
針對 Ubuntu Server:
sudo apt install -y openjdk-8-jdk
如需詳細資訊,請參閱如何在 OpenJDK 網站上下載和安裝預先建置的 Open 套件
。JDK -
將預設 Java 開發工具集切換或升級至 OpenJDK 8。若要這樣做,請執行
update-alternatives
命令與--config
選項。執行此命令兩次,以切換或升級 Java runner 和編譯器的命令列版本。sudo update-alternatives --config java sudo update-alternatives --config javac
在每個提示中,輸入 OpenJDK 8 的選擇編號 (包含 的選項編號
java-1.8
)。 -
確認 Java 執行器和編譯器的命令列版本正在使用 OpenJDK 8。若要執行此操作,執行 Java runner 和編譯器的命令列版本並使用
-version
選項。java -version javac -version
如果安裝 OpenJDK 8 並正確設定,Java Runner 版本輸出會包含以 開頭的值
openjdk version 1.8
,而 Java 編譯器版本輸出則以 開頭的值javac 1.8
。
步驟 2:新增程式碼
在 中 AWS Cloud9 IDE,使用下列程式碼建立檔案,並使用名稱 儲存檔案hello.java
。(若要建立檔案,請在選單列上選擇 File (檔案)、New File (新增檔案)。若要儲存檔案,請選擇 File (檔案)、Save (儲存)。)
public class hello { public static void main(String []args) { System.out.println("Hello, World!"); System.out.println("The sum of 2 and 3 is 5."); int sum = Integer.parseInt(args[0]) + Integer.parseInt(args[1]); System.out.format("The sum of %s and %s is %s.\n", args[0], args[1], Integer.toString(sum)); } }
步驟 3:建置並執行程式碼
-
使用 Java 編譯器的命令列版本,將
hello.java
檔案編譯為hello.class
檔案。若要這麼做,請使用 中的終端機 AWS Cloud9 IDE,從與hello.java
檔案相同的目錄執行 Java 編譯器,指定hello.java
檔案。javac hello.java
-
使用 Java runner 的命令列版本執行
hello.class
檔案。若要這樣做,從與hello.class
檔案相同的目錄執行 Java runner,並指定在hello
檔案中宣告的hello.java
類別的名稱,新增兩個整數 (例如,5
和9
)。java hello 5 9
-
比較您的輸出。
Hello, World! The sum of 2 and 3 is 5. The sum of 5 and 9 is 14.
步驟 4:設定 以使用 AWS SDK for Java
您可以增強此範例,以使用 AWS SDK for Java 建立 Amazon S3 儲存貯體、列出可用的儲存貯體,然後刪除剛建立的儲存貯體。
在此步驟中,您會在環境中安裝 Apache Maven
使用 Maven 設定
-
在您的環境中安裝 Maven。若要查看是否已安裝 Maven,請使用 中的終端機 AWS Cloud9 IDE,並使用
-version
選項執行 Maven。mvn -version
如果成功,輸出會包含 Maven 版本編號。如果已安裝 Maven,請直接跳到此程序中的步驟 4,使用 Maven 在環境中產生新的 Java 專案。
-
使用終端機執行以下命令以安裝 Maven。
如為 Amazon Linux,您可以使用下列命令獲得存放 Maven 的套件儲存庫相關資訊,然後使用此資訊安裝 Maven。
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo sudo yum install -y apache-maven
如需上述命令的詳細資訊,請參閱 Fedora Project Wiki 網站上的適用於 Enterprise Linux (EPEL) 的額外套件
。 對於 Ubuntu Server,改為執行下列命令。
sudo apt install -y maven
-
執行 Maven 並使用
-version
選項以確認安裝。mvn -version
-
使用 Maven 產生新的 Java 專案。若要這樣做,請使用終端機從您希望 Maven 產生專案的目錄執行下列命令 (例如環境的根目錄)。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
上述命令會在環境中建立以下專案目錄結構。
my-app |- src | `- main | `- java | `- com | `- mycompany | `- app | `-App.java |- test | `- java | `- com | `- mycompany | `- app | `- AppTest.java `- pom.xml
如需有關上述目錄結構的詳細資訊,請參閱 Apache Maven Project 網站上的 Maven 快速入門 Archetype
和 認識標準目錄配置 。 -
修改專案的專案物件模型 (POM) 檔案。(POM檔案會定義 Maven 專案的設定。) 若要執行此操作,請從 Environment (環境) 視窗開啟
my-app/pom.xml
檔案。在編輯器中,使用以下程式碼取代該檔案的目前內容,然後儲存pom.xml
檔案。<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.mycompany.app.App</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.11.330</version> </dependency> </dependencies> </project>
上述POM檔案包含指定宣告的專案設定,例如:
-
artifactid
的my-app
設定項目可設定專案的根目錄名稱,group-id
的com.mycompany.app
設定項目可設定com/mycompany/app
子目錄結構以及package
和App.Java
檔案中的AppTest.java
宣告。 -
artifactId
設定my-app
,其中packaging
設定jar
、version
設定1.0-SNAPSHOT
和descriptorRef
jar-with-dependencies
設定輸出JAR檔案名稱my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
。 -
plugin
本節宣告將建置包含JAR所有相依性的單一 。 -
設定
groupId
com.amazon.aws
和artifactId
設定的dependency
區段aws-java-sdk
包含 AWS SDK for Java 程式庫檔案。要使用的 AWS SDK for Java 版本是以version
設定宣告。若要使用不同的版本,請取代此版本編號。
-
使用 Gradle 設定
-
在您的環境中安裝 Gradle。若要查看是否已安裝 Gradle,請使用 中的終端機 AWS Cloud9 IDE,使用
-version
選項執行 Gradle。gradle -version
如果成功,輸出會包含 Gradle 版本號碼。如果已安裝 Gradle,請直接跳到此程序中的步驟 4,使用 Gradle 在環境中產生新的 Java 專案。
-
使用終端機執行以下命令以安裝 Gradle。這些命令會安裝並執行 SDKMAN! 工具,然後使用 SDKMAN! 安裝最新版本的 Gradle。
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install gradle
-
執行 Gradle 並使用
-version
選項以確認安裝。gradle -version
-
使用 Gradle 在環境中產生新的 Java 專案。若要這樣做,請使用終端機執行以下命令來建立專案目錄,然後切換到該目錄。
mkdir my-app cd my-app
-
執行以下命令,讓 Gradle 在環境的
my-app
目錄中產生新的 Java 應用程式專案。gradle init --type java-application
上述命令會在環境中建立以下專案目錄結構。
my-app |- .gradle | `- (various supporting project folders and files) |- gradle | `- (various supporting project folders and files) |- src | |- main | | `- java | | `- App.java | `- test | `- java | `- AppTest.java |- build.gradle |- gradlew |- gradlew.bat `- settings.gradle
-
修改專案的
AppTest.java
。(如果您不執行此操作,專案可能不會如預期建置或執行。) 若要執行此操作,請從 Environment (環境) 視窗開啟my-app/src/test/java/AppTest.java
檔案。在編輯器中,使用以下程式碼取代該檔案的目前內容,然後儲存AppTest.java
檔案。import org.junit.Test; import static org.junit.Assert.*; public class AppTest { @Test public void testAppExists () { try { Class.forName("com.mycompany.app.App"); } catch (ClassNotFoundException e) { fail("Should have a class named App."); } } }
-
修改專案的
build.gradle
檔案。(build.gradle
檔案定義 Gradle 專案的設定。) 若要執行此操作,請從 Environment (環境) 視窗開啟my-app/build.gradle
檔案。在編輯器中,使用以下程式碼取代該檔案的目前內容,然後儲存build.gradle
檔案。apply plugin: 'java' apply plugin: 'application' repositories { jcenter() mavenCentral() } buildscript { repositories { mavenCentral() } dependencies { classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE" } } apply plugin: "io.spring.dependency-management" dependencyManagement { imports { mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.330' } } dependencies { compile 'com.amazonaws:aws-java-sdk-s3' testCompile group: 'junit', name: 'junit', version: '4.12' } run { if (project.hasProperty("appArgs")) { args Eval.me(appArgs) } } mainClassName = 'App'
上述
build.gradle
檔案包含指定宣告的專案設定,例如:-
io.spring.dependency-management
外掛程式用於匯入 AWS SDK for Java Maven 物料清單 (BOM),以管理專案的 AWS SDK for Java 相依性。 會classpath
宣告要使用的版本。若要使用不同的版本,請取代此版本編號。 -
com.amazonaws:aws-java-sdk-s3
包含 AWS SDK for Java 程式庫檔案的 Amazon S3 部分。mavenBom
會宣告要使用的版本。如果您要使用不同的版本,請取代此版本編號。
-
步驟 5:在您的環境中設定 AWS 憑證管理
每次使用 AWS SDK for Java 呼叫 AWS 服務時,您必須隨呼叫提供一組 AWS 憑證。這些憑證會判斷 是否 AWS SDK for Java 具有適當的許可來進行該呼叫。如果登入資料未涵蓋適當許可,呼叫即會失敗。
在此步驟中,您會在環境中存放您的憑證。若要這麼做,請遵循 AWS 服務 從 中的環境呼叫 AWS Cloud9 中的指示,然後返回本主題。
如需其他資訊,請參閱 AWS SDK for Java 開發人員指南中的設定開發用的 AWS 憑證和區域。
步驟 6:新增 AWS SDK程式碼
在此步驟中,您會新增程式碼以與 Amazon S3 互動,藉此建立儲存貯體、列出可用的儲存貯體,然後刪除您剛建立的儲存貯體。
從 Environment (環境) 視窗,開啟 my-app/src/main/java/com/mycompany/app/App.java
檔案 (適用於 Maven) 或開啟 my-app/src/main/java/App.java
檔案 (適用於 Gradle)。在編輯器中,使用以下程式碼取代該檔案的目前內容,然後儲存 App.java
檔案。
package com.mycompany.app; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.Bucket; import com.amazonaws.services.s3.model.CreateBucketRequest; import java.util.List; public class App { private static AmazonS3 s3; public static void main(String[] args) { if (args.length < 2) { System.out.format("Usage: <the bucket name> <the AWS Region to use>\n" + "Example: my-test-bucket us-east-2\n"); return; } String bucket_name = args[0]; String region = args[1]; s3 = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(region) .build(); // List current buckets. ListMyBuckets(); // Create the bucket. if (s3.doesBucketExistV2(bucket_name)) { System.out.format("\nCannot create the bucket. \n" + "A bucket named '%s' already exists.", bucket_name); return; } else { try { System.out.format("\nCreating a new bucket named '%s'...\n\n", bucket_name); s3.createBucket(new CreateBucketRequest(bucket_name, region)); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } } // Confirm that the bucket was created. ListMyBuckets(); // Delete the bucket. try { System.out.format("\nDeleting the bucket named '%s'...\n\n", bucket_name); s3.deleteBucket(bucket_name); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } // Confirm that the bucket was deleted. ListMyBuckets(); } private static void ListMyBuckets() { List<Bucket> buckets = s3.listBuckets(); System.out.println("My buckets now are:"); for (Bucket b : buckets) { System.out.println(b.getName()); } } }
步驟 7:建置和執行 AWS SDK程式碼
若要執行上個步驟的程式碼,請從終端機執行以下命令。這些命令使用 Maven 或 Gradle 為專案建立可執行JAR檔,然後使用 Java Runner 執行 JAR。使用要在 Amazon S3 中建立的儲存貯體名稱 (例如,my-test-bucket
) 和在 中建立儲存貯體作為輸入的 AWS 區域 ID (例如,) JAR執行us-east-2
。
如果是 Maven,請執行下列命令。
cd my-app mvn package java -cp target/my-app-1.0-SNAPSHOT-jar-with-dependencies.jar com.mycompany.app.App my-test-bucket us-east-2
如果是 Gradle,請執行下列命令。
gradle build gradle run -PappArgs="['my-test-bucket', 'us-east-2']"
將您的結果與下列輸出比較。
My buckets now are: Creating a new bucket named 'my-test-bucket'... My buckets now are: my-test-bucket Deleting the bucket named 'my-test-bucket'... My buckets now are:
步驟 8:清除
為了避免在您使用此範例之後持續向 AWS 您的帳戶收取費用,您應該刪除環境。如需說明,請參閱「刪除 AWS Cloud9 中的環境」。