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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Java

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

Q&A

解決済

1回答

12549閲覧

Visual Studio2005 Visual Basic から Javaのクラスメソッドを呼び出す方法を教えて下さい

izuki_y

総合スコア65

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Java

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

0グッド

0クリップ

投稿2015/02/24 11:14

よろしくお願いします。
処理部分をJavaで作り、GUI周りをVBで作成して、VBからJavaのメソッドを呼び出したいと思っています。
適当なサンプルを作り、Shellコマンドなどを使って以下の様にクラスを呼び出してみましたが
上手くいきません(そもそもShellは実行ファイルの呼び出しっぽいので違う様な気はしますが)

lang

1Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 2 Dim Ret As Integer 3 Ret = Shell("java HashEncoding") 4 5End Sub

Javaで作ったメソッドをVBからの呼び出し方を教えてください。

lang

1import java.security.MessageDigest; 2 3public class HashEncoding { 4 5 private final String HASH_TYPE; 6 7 // コンストラクタ 8 public HashEncoding(){ 9 // ハッシュ関数を"SHA-1"にする 10 this("SHA-1"); 11 } 12 // コンストラクタ( 引数あり ) 13 public HashEncoding( String algorithm ){ 14 HASH_TYPE = algorithm; 15 } 16 17 // 文字列からハッシュ値を生成する 18 public String getStringDigest(byte[] data, int offset, int len) throws Exception { 19 MessageDigest md = MessageDigest.getInstance(HASH_TYPE); 20 21 md.update(data, offset, len); 22 23 return hashByte2String(md.digest()); 24 } 25 // ハッシュ値を16進数文字列に変換 26 private String hashByte2String(byte []hash) { 27 StringBuffer hexString = new StringBuffer(); 28 for (int i = 0; i < hash.length; i++) { 29 if ((0xff & hash[i]) < 0x10) {// < 16(<=F)の場合、1桁になるので、頭に"0"を追加 30 hexString.append("0" + Integer.toHexString((0xFF & hash[i]))); //HEX 31 } else { 32 hexString.append(Integer.toHexString(0xFF & hash[i])); //HEX 33 } 34 } 35 return hexString.toString(); 36 } 37}

上記のクラスをコンパイルして HashEncoding.class を生成しました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

VBからJavaのメソッドを呼び出したいと思っています。

メソッド単体の呼び出しはできません。VBからは、Javaで書かれたアプリケーションを起動する以上の結びつきは実現できません。

ただし、どうしても相互運用したければ以下の回避案が考えられます。いずれも VB側でデータ送信 → Java側でデータ受信+実処理+結果送信 → VB側で結果受信 という流れです。リスト上位は実装が比較的簡単で、下位の実装ほど複雑になります。

  • 一時ファイルを介したデータ通信(送信=ファイル書き出し/受信=ファイル読み込み)
  • 標準入出力コンソールを介したデータ通信
  • ローカルなTCP接続を介したデータ通信
  • プロセス間共有メモリAPIを介したデータ通信

もしくは jni4net のようなライブラリが使えるかもしれません。

投稿2015/02/24 12:51

yohhoy

総合スコア6189

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

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

izuki_y

2015/02/27 10:50

回答ありがとうございます。 遅くなって申し訳ありません。 自分の方も併せて調べてみたのですが、やはり直接メソッドを叩く方法はなさそうですね。 もともとVBだとユーザインタフェース周りを作るのが楽だと言う事を考えての調査だったのです。 通信やファイルを媒介にしてアクセスする方法も考えたのですが、これだとGUIにするメリッドがあまりなさそうなので諦めてSwingかAWT辺りで実装する事を考えようと思います。 ただ jni4net のようなライブラリがある事は初めて知ったので時間があるときにでも挑戦してみようと思います。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問