• ベストアンサー
  • 困ってます

JavaのクラスをCアプリケーションから起動。。?

Javaにて、引数として渡されたURLに  接続するクラスを作成します。 それをCで作ったアプリケーションから、  URLを引数として渡し、起動させるようなものを  考えています。 この時、C言語からJavaで作った上記のようなクラスを  呼び出すにはどうしたらよいのでしょうか。 また、この場合のJavaの処理として、  指定URLに対して、GETではなく、POSTを行うには  どのようにすれば可能でしょうか。 具体的な方法、参考になる文献など、  ご存知の方、いらっしゃいましたら、ご教授願います。

noname#744
noname#744

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数129
  • ありがとう数11

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • ryoyama
  • ベストアンサー率56% (45/80)

質問の内容からわからない点が2つあります。 1.Javaのプログラムはアプリケーションなのかアプレットなのか。 2.Cのプログラムはそのマシン上で動くのか、CGIとしてサーバで動くのか。(KanataさんはCGIと考えたようですね。) そのマシン上で動くCのアプリケーションから同じマシンにあるJavaのクラスを呼び出すことはできるようです。 jclass FindClass(JNIEnv *env, const char *name)という関数がJNIにあります。 くわしくは参考URLを見てください。 質問がかなり高度な内容なので、これくらいしかアドバイスできません・・・。 GET,POSTの質問はちょっとボクにはわかりません。 それではがんばってください。ヾ(^o^)

参考URL:
http://java.sun.com/products/jdk/1.2/ja/docs/ja/guide/jni/index.html

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございます。 1について、Javaはアプリケーション、です。 2については、マシン上で動く単純なユーザインタフェースプログラム、を想定しています。 全てJavaかCで製造したいところなのですが、 諸々の事情により、このようなややこしい構成となっています。 FindClassですね。 早速、お教えいただきましたURLを覗いてみます。 ありがとうございました。

関連するQ&A

  • UNIX CからのJAVA起動について。

    いつもお世話になっております。 OS:UNIX、 言語:C言語で、JAVAで作成したクラスを引数を渡して起動したいのですが、やり方がわかりません。 実現可能なのかもよくわかりません。 UNIX開発は今回が初めてで困っております。 参考ソースや参考URLがありましたら、教えてください。 よろしくお願いいたします。

  • JavaアプリケーションからHTMLの起動

    Javaアプリケーションから、HTMLファイルを画面サイズを指定して、起動することは可能でしょうか。可能であれば教えてください。お願いします。

  • javaのメソッドの引数で、クラスの配列を指定する

    javaのメソッドの引数で、クラスの配列を指定する事は可能なのでしょうか? 受け取るメソッドでは引数の所に何と書けば良いのでしょうか? 教えてください!

    • ベストアンサー
    • Java

その他の回答 (1)

  • 回答No.1
noname#9414
noname#9414

基本的には、無理ではないでしょうか。なぜなら、 C言語で書いたアプリケーションは、CGIとして サーバ側で実行されるのにも関わらず、Javaで 書いたクラスは、クライアント側で実行するから です。 まぁ、クライアントのIPアドレスをしっかりと取得 できるのならば、C言語側で取得しておき、そのIP アドレスのJavaクラスを呼び出す・・・なんてことが できるかもしれませんが、少なくとも私の知識では そのようなことはできないと思います。 それから、Javaの処理として、GETではなくPOSTを 使用するのはURLConnectionを使用すれば、取得 できるようです。出力ストリームから読みとるよう ですよ。 ではでは☆

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答、ありがとうございます。 実は、Cのアプリケーションと、Javaのクラスは  同じハード上にあり、前者からのトリガによって、  後者が起動して、URLに接続する。。。というもの  なのです。 つまり、ローカルでCからJavaクラスを呼び出す方法、  という事です。 舌足らずで申し訳ありませんが、  ご存知でしたらお知恵をお借りいたしたく思います。 POSTに関しては、参考になりました。  これから実験してみます。  ありがとうございました。

関連するQ&A

  • 既存JavaクラスをWebサービス化するにあたって

    既存JavaクラスをWebサービス化するにあたって axis2やJAX-WSを用いて既存Javaクラスを Webサービス化する方法を模索しています。 int型など、引数や返り値が単純なデータ型は 簡単にWebサービス化することができたのですが HashTableなどよく使われるユーティリティクラスや 独自クラスなどを引数や返り値に使用している場合は どのような方法をとれば良いのか さっぱり情報が見当たらず困っています。 参考となるサイトや 何か少しでもそのへんのことをご存知の方がいらっしゃれば どうかご教示くださいますようお願い申し上げます。

  • java起動時の日本語引数文字化けについて

    java初心者です。 C++ソースからCreateProcess関数を用いてjava.exeを起動し、アプリケーションを起動させるアプリケーションを作成しています。 現在、java側で日本語が文字化けしてしまい、期待する動作が得られていません。 具体的には起動するjavaアプリケーションに引数としてパスを渡しており、そのパスに 日本語が含まれていると文字化けにより解釈できないという状況です。 日本語がアプリケーション内部で正しく利用できるようにはどのようにすれば良いでしょうか。 環境は以下の通りです。 ※情報が足りない等ありましたらお願い致します。。 OS:WindowsXP C++の開発環境:VC6 CreateProcess関数起動時の文字コード:UTF8 java開発環境:eclipse3.5 javaの引数はStringで受けるのですが、java内部ではUTF16らしいので、UTF8で記述された 文字列をUTF16として読むため文字化けしているのかなと調べた結果推測しています。 だとすると、java側で引数で受けた文字列をUTF-8からUTF-16に変換すれば良いのかなと 考えています。 ではその場合どのような処理が必要になるのでしょうか。(String#getBytes()を使う?) 後、javaコンパイル時にエンコードを指定するという方法もあるようですが、その方法は 他へ影響が大きいため、利用できそうにありません。 情報が足りない等あればお願い致します。 ご回答よろしくお願い致します。

  • Java クラスを使ったソート

    Javaで隣接交換法を用いて配列dataを昇順に並び替え、出力するプログラムを作成する。 ただし、ループ処理には、int型の変数は使わず、以下のCounterクラスを使用する。 という課題が出て、とり組んでみたのですが所々よく分からないので、お力添えしていただければと思います。 課題には下記のような条件が書いてありました。 配列data={54,76,32,89,45,11,8,54,29,67}; [クラス] Counter [インスタンス変数] int型の値を保持するcount [コンストラクタ] 引数で渡された値を初期値としてインスタンス変数に設定する。 引数を省略された場合、ゼロを設定する。 [メソッド] increment 値に1加算する decrement 値に1減算する compareTo 以下の処理を行う Counterの保持している値が引数に指定された値と 等しい場合、値0を返す。 Counterの保持している値が引数に指定された値より 小さい場合、0より小さい値を返す。 Counterの保持している値が引数に指定された値より 大きい場合、0より大きい値を返す。 get Counterの保持している値を添え字として、 引数で渡された配列の要素を取得します。 set Counterの保持している値を添え字として、 第1引数で渡された配列に第2引数で渡された値を設定します。 以下組んだものです。 ---- class Counter { int count = 0; Counter(int count) { this.count = count; } Counter() { this.count = 0; } public int get(int[] data) { return this.count; } public void set(int[] data, int count) { this.count = count; } public void increment() { this.count = count + 1; } public void decrement() { this.count = count - 1; } public int compareTo() { return count; } } public class Lesson09 { public static void main(String args[]) { Counter counter = new Counter(0); int[] data = {54, 76, 32, 89, 45, 11, 8, 54, 67}; counter.get(data); counter.set(data, 0); } } ---- とりあえず、compareToとsetとgetの部分をどう記述していいのかがよく分かりません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaアプリケーションとは?

    Java Runtime Environmenとは、どのような時に必要ですか? ソフト紹介サイト「窓の杜」では、http://www.forest.impress.co.jp/lib/arc/runtime/runtimeapp/javaruntime.html ”IEやNetscapeなどのWebブラウザーにはJavaランタイムが組み込まれているため、Webブラウザー上で動作する“Javaアプレット”と呼ばれるプログラムを実行する場合は必要ないが、Webブラウザーとは無関係に起動できる“Javaアプリケーション”と呼ばれるプログラムを実行する際に必要となる。”と書かれています。 Javaアプリケーションに必要と書かれていますが、具体的な例はありますか? よろしくお願いします。

    • ベストアンサー
    • Java
  • java アプリケーションをjava アプレットに

    java超初学者です。詳しいかたご教授願います。 java アプリケーションをjava アプレットに書き換えたいのですが、具体的にはどう書き換えを行ったらいいのか修正をお願いします。 (文字制限があるので、14個あるクラスファイルの中で(内1つはhtmlファイル)、メインメソッドを持つ実行クラスだけのせています。) Appletを継承させる、属性をメインクラスとコンストラクタはpublic にする、 mainメソッドを削除し、initメソッドへ書き換える、サイズ指定は<applet>タグで指定する。等調べましたが 具体的にわかりません。特にコンストラクタとメインメソッドの部分のアプレットへの書き換えがわかりませんでした。 宜しくお願い致します。 //実行クラスです。 import java.awt.*; import java.awt.event.*; /** *ゲームクラス(ここから始まる)<p> *画面の作成 */ public class Game extends Frame { /** * メインクラス */ public static void main(String args[]) { //フレームの作成 new Game(); } /** * 引数なしのコンストラクタ */ Game() { //*** ウィンドウの初期化 //タイトル super("Shooting Game"); //クローズボタンによる終了処理の実装 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); setSize(500, 500); //ウィンドウのサイズ //*** キャンバスの初期化 MyCanvas mc = new MyCanvas(); add(mc); //フレームにキャンバスを追加 setVisible(true); //ウィンドウの表示 //ゲームデータの初期化 mc.init(); //スレッドを作成 mc.initThread(); } }

  • JAVAのクラスの考え方は・・?

    JAVAの勉強をしていている学生です。 常々思っていたのですが、クラスの考え方がしっくりきてませんヽ(~-~ よく参考書などで書かれていることで 「クラスは設計図のようなもの、オブジェクトはそこから作成した実体」 「鋳型がクラスでどんどん作れるのがインスタンス」 といった話が疑問でならないのです。 というのも・・クラスの設計って、自分自身をフィールドに宣言したりできますよね。。 でそこから生成して、また自分自身のフィールドに生成して・・とか。 インターフェースを実装したクラスで、、、内部クラスを持ったクラスで、、、ジェネリッククラス、、。 となってくると、最初の考え方では、論理的に無理?私の脳内では変換しきれないです(´;ω;) 多分前提となる考え方が間違っていたり、私の想像力が乏しいだけだと思います。 どなたか、「クラスってこう考えればオブジェクト指向が見えてくる」と表現している本やサイトなどご存じないでしょうか。 一朝一夕で理解しようとは思っていませんので、きちんと参考にして理解しようと頑張ります! 「私的には・・」や「あなたが勘違いしている箇所は・・」といったご意見もぜひお聞きしたいです! クラスかオブジェクト指向かどっちかというより、クラスありきでJAVAのオブジェクト指向が本当に理解できると考えています。参考書やWEBを探してみた限りではやっぱり理解できないです(´;ω;) ちなみにC言語を中学生で始め、プログラミングに触れました。

  • Javaのクラスの中身について

    Javaのクラスの中身について メソッドの中身などを見ることはできないのでしょうか? たとえばJTextComponentのpasteメソッドの中は Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable obj = clipboard.getContents(null); String str = (String)obj.getTransferData(DataFlavor.stringFlavor); というように クリップボードの文字列を取得してそれをコンポーネントに追加していると思うのですが、 実際に中身がわからなければオーバーライドなど 細かいことができないのではないかと、ふと思いました。 公式のライブラリや、javap、参考書などでは引数、戻り値、アクセス制限などはわかるのですが それではカバーできない問題が最近よく起きます。 今現在はJava上級者が作っているようなサイトを やりたいことに応じて徹底的に調べてなんとか情報をいただいているのですが、 時間的に非常に非効率で死にそうです。 アプリケーションの開発ということの本質?からずれているかもしれませんが、 知りたいのだからしょうがないというか・・・

    • ベストアンサー
    • Java
  • javaでウィンドウサイズの制御を・・

    はじめまして.kagututiといいます.最近javaでアプリケーションを製作するために勉強中の身です.自分が調べているのは,javaでIEなどのウィンドウのサイズ指定や位置指定ができるものです.そこで質問なのですが,上記のようなことはjavaで可能なのでしょうか?APIでクラスなどを調べてはみたもののよくわかりません.あとこれに関して参考になるようなHP,書籍をご存知でしたらお教えいただきたいです. どうかよろしくお願いいたします.

    • ベストアンサー
    • Java
  • JavaでPOST

    JavaアプリケーションでPOSTするプログラムの作り方で質問です。 エンコードする関数(encodeだったかな)は見つかりました。 あとは、 引数=値&引数=値&引数=値、、、 の部分から値の部分を切り出す所をどうするかです。 1.切り出し部分を自分で作る、のが普通ですか? 2.何かツールのようなものがありますか? 3.そもそも違う方法が一般的ですか? サンプルコードがあれば最高です。

    • ベストアンサー
    • Java
  • JAVA VMの2回目以降の起動が早いのはなぜでしょうか。JAVAのプ

    JAVA VMの2回目以降の起動が早いのはなぜでしょうか。JAVAのプロセス自体は起動毎に作成されているので、プロセスが常駐しているということではなさそうですが、メモリのどこかに情報が残っているのでしょうか。 また、JAVAの画面アプリケーション等で、初回の起動が遅く2回目以降は早くなるのは、VMの起動速度だけではなさそうなのですが、ロードしたクラスの情報もどこかに残っているのでしょうか。

専門家に質問してみよう