質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1465閲覧

javaでjar作成に関するのアドバイスをお願いします。

wangzj

総合スコア53

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2018/07/10 01:31

編集2018/07/10 02:45

背景:
webアプリからprivateブロックチェーンをアクセスするために、javaでjar/warを作ろうと思ってます。
webアプリ <---> javaアプリ <---> privateブロックチェーン

javaアプリに実現したいこと:
HttpURLConnectionより、ブロックチェーンをアクセスして、Responseを返す
ResponseはJsonデータなので、Jsonデータ処理(整形、Mapに転換など)が必要です。
実際のコードなら、↓をご参照ください。
※作成中ですが、json処理を入れていない。json処理を入れると他のjarをIMPORTする必要がある

java

1import java.io.BufferedReader; 2import java.io.DataOutputStream; 3import java.io.IOException; 4import java.io.InputStreamReader; 5import java.io.StringWriter; 6import java.net.HttpURLConnection; 7import java.net.MalformedURLException; 8import java.net.URL; 9 10public class Main { 11 12 private static String urlBase = "http://127.0.0.1:8080"; 13 private static String urlOperate = "http://127.0.0.1:8081"; 14 15 public static void main(String[] args) { 16 17 try { 18 if (args == null || args.length == 0) { 19 getLatest(); 20 } else { 21 switch (args[0]) { 22 case "latest": 23 getLatest(); 24 break; 25 case "address": 26 getNewAddress(); 27 break; 28 case "txes": 29 getTxes(args[1]); 30 break; 31 case "getTokensByAddress": 32 getAllTokensByAddress(args[1]); 33 break; 34 default: 35 System.out.println("入力ミスです。"); 36 } 37 } 38 39 } catch (MalformedURLException e) { 40 e.printStackTrace(); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } 44 } 45 46 public static void getLatest() { 47 try { 48 URL url = new URL(urlOperate + "/blockchain/latest"); 49 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 50 System.out.printf("Response: %d %s\n", conn.getResponseCode(), conn.getResponseMessage()); 51 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 52 String input; 53 54 while ((input = br.readLine()) != null) { 55 System.out.println(input); 56 } 57 br.close(); 58 59 } catch (MalformedURLException e) { 60 e.printStackTrace(); 61 } catch (IOException e) { 62 e.printStackTrace(); 63 } 64 } 65 66 public static void getNewAddress() { 67 try { 68 URL url = new URL(urlOperate + "/addresses"); 69 70 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 71 conn.setRequestMethod("POST"); 72 conn.connect(); 73 74 System.out.printf("Response: %d %s\n", conn.getResponseCode(), conn.getResponseMessage()); 75 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 76 String input; 77 78 while ((input = br.readLine()) != null) { 79 System.out.println(input); 80 } 81 br.close(); 82 } catch (MalformedURLException e) { 83 e.printStackTrace(); 84 } catch (IOException e) { 85 e.printStackTrace(); 86 } 87 } 88 89 public static String getTxes(String txId) { 90 try { 91 URL url = new URL(urlOperate + "/txes/" + txId); 92 93 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 94 95 System.out.printf("Response: %d %s\n", conn.getResponseCode(), conn.getResponseMessage()); 96 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 97 String input; 98 99 while ((input = br.readLine()) != null) { 100 System.out.println(input); 101 } 102 103 br.close(); 104 return ""; 105 106 } catch (MalformedURLException e) { 107 e.printStackTrace(); 108 } catch (IOException e) { 109 e.printStackTrace(); 110 } 111 return ""; 112 } 113 114 public static String getAllTokensByAddress(String address) { 115 try { 116 URL url = new URL(urlOperate + "/addresses/" + address + "/tokens"); 117 118 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 119 120 System.out.printf("Response: %d %s\n", conn.getResponseCode(), conn.getResponseMessage()); 121 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 122 String input; 123 124 while ((input = br.readLine()) != null) { 125 System.out.println(input); 126 } 127 128 br.close(); 129 return ""; 130 131 } catch (MalformedURLException e) { 132 e.printStackTrace(); 133 } catch (IOException e) { 134 e.printStackTrace(); 135 } 136 return ""; 137 } 138}

今の考え:
javaでjarファイルを作成することにしました。
warなら、Tomcat等にデプロイしなけければなりません。
jarなら、そのまま置いといて、簡単にwebアプリに呼ばれるはずです。
できるだけ、簡単なものに作りたいので、jarで作成しろうと思います。
Jsonデータ処理に関しては、他のjarをimportする必要があるので、作成する際に、Jar Jar Linksもしないと行けません。

実現には可能でしょうか?
ほかもっと簡単な方法があれば、ぜひご教授ください。

開発環境:
windows
eclipse
サーバ環境:
ubuntu

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/07/10 02:11

実際のコードをご提示いただけますか?また、プログラムはどのようなエディタで打っていますか?開発環境含めてご提示ください。
wangzj

2018/07/10 02:18

開発環境とサーバ環境を追記しました
m.ts10806

2018/07/10 02:23

この質問内容だけでは前の質問内容との連動性が分からないので、質問URLを質問本文に記載し、「続き」または「関係がある」旨を記載してください。
wangzj

2018/07/10 02:27

質問内容にURLを追加しました。
m.ts10806

2018/07/10 02:37 編集

あのときのコードでしたか。これってあのコードのままで解決できたのでしょうか?エラーがでるコードをjar化war化というのはどういうことでしょう?それでしたら最新のエラーの出ていないコードをこちらの質問に追記すべきかと思います。
wangzj

2018/07/10 02:46

最新コードを追加しました。作成中のものなので、完璧ではありません・
m.ts10806

2018/07/10 02:47

いえ、エラーが出ないもので、方向性が分かれば大丈夫かと思います。
wangzj

2018/07/10 04:01

なら、↑にはったコードで大丈夫ですね
guest

回答2

0

Eclipseであれば、エクスポート>実行可能jarファイルでエクスポートすれば良いでしょう。必要なjarファイルなどがビルドパスに組み込まれていれば、出力時の形式を選択できます。

投稿2018/07/10 02:45

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wangzj

2018/07/11 01:05

ご回答ありがとうございます。 現在、jarファイル作成の問題ではなく、↑のコードでjarファイルを作成して、ほかのwebアプリに呼ばれて使うなら、可能かどうかの確認です。
A-pZ

2018/07/11 01:09

なので同様に、プロジェクトをjarでエクスポートするか、参照するプロジェクトから、共有したいプロジェクトへのビルドパスを追加することもできます。
wangzj

2018/07/11 01:24

コマンドで実行して、テストするために、Main.mainメソッドにいろんな分岐を作成しましたが、 jarに作成して、他のプロジェクトに呼ばれるなら、別にMain.mainメソッドを書かなくても大丈夫でしょうかね?
guest

0

自己解決

実際の環境にあわせて、AzureのTrigger APIにすることになりました。
他のアプリから、Blobストレージにファイルをアップロードする際に、
Trigger APIが自動に実行され、ファイル内容を分析しながら、privateブロックチェーンに登録するように実現しました。

投稿2018/10/18 00:05

wangzj

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問