2

まず、私はこれを行った経験がありません。しかし、他の良いプログラムの始まりと同じように、私は修正する必要のある問題を抱えているので、学びたいと思っています。

皆さんの多くは、さまざまなpdf関連のタスクを処理するための便利なユーティリティであるpdftkにすでに精通しているでしょう。私が知る限り、これらの機能のほとんどは、必要なもの(そしておそらくそれがまだ存在する唯一の理由)を除いて、はるかに新しく、より軽いライブラリ/拡張機能で利用できます:フォームデータファイル(fdfとxfdf)をフォームとマージするPDFと出力として新しいファイルを取得します。

問題は、私のサーバーにgcjがないことです。これは、pdftkをビルド/コンパイルするための基本です。Solarisを使用しているためなのか、それとも他のシステム管理者レベルの理由によるものなのかはわかりませんが、すぐにgcjを取得することはできません。そして、私が知る限り、Solaris用にコンパイル済みのバイナリはありません。

そのため、MAKEファイルとCコードを書き直して、javacを介してJavaライブラリ(非常に古いバージョンのitext)を直接インポートできると考えています。

しかし、実際にどこから始めればよいのかわかりません。私が知っているのは:

  1. 使い終わったらバイナリが必要なので、使用するたびにJavaVMは必要ありません。
  2. 現在のアプリはGCJを使用しています。

だから私の最初の考えは「これは簡単だ、おそらく他のCベースのメソッドでクラスを呼び出すことができる」ということでしたが、これを行うための簡単なメソッドを見つける代わりに、さまざまな角度でたくさんの長い投稿を見つけていますこれに近づくことができることなど。

次に、Sunのサイトで、Javaクラスで他の言語(Cなど)を呼び出す方法に関するページを見つけました。しかし、そのアプローチの問題は次のとおりです。

  1. ラッパーのラッパーを作成する必要があります
  2. その部分をスキップして、すべてをJavaで書くほうがよいでしょう。
  3. すでに存在するものを含むクラスをインポートできれば、まだその準備はできていません。
  4. 最後にコンパイルしてバイナリを取得できるのか、それとも毎回必要とされるJavaに閉じ込められているのかがわかりません。

繰り返しになりますが、無知であることをお詫び申し上げます。GCJに依存するCコードをJavaで直接機能するものに置き換える方法のアドバイスと例が必要です。

そしてもちろん、「それができれば、もう金持ちになる」というタイプの質問の1つを尋ねている場合は、私に知らせてください。

4

2 に答える 2

3

あなたが何を探しているのか正確にはわからないので、いくつかの回答を提供しました。


実行する必要がある Java コードがある場合は、次のことを行う必要があります。

  1. jvmで実行します。独自のカスタム C コード内でその vm を開始できますが、まだ jvm を使用しています
  2. 別の言語で書き直してください。
  3. 先行コンパイラ (gcj など) でコンパイルします。

ちなみに、ホーム フォルダにある gcj のコピーをコンパイルして使用することもできます。魔法のスイッチだと思います--enable-languages=java,c(詳しくはこちらをご覧ください)


Java から呼び出したい C コードがある場合、次の 4 つのオプションがあります。

  1. Java ネイティブ インターフェイス (JNI)。これを見つけたようです
  2. Java ネイティブ アクセス (JNA)。これは JNI よりも低速ですが、コーディングが少なくて済み、ラッパーの C コードも必要ありません。jarとライブラリが必要です
  3. CLI ユーティリティを作成し、Runtime.Exec(...) を使用して呼び出します。
  4. ある種のプロセス間通信を使用して、Java コードが C コードに操作を実行し、結果を返すように要求します。

追加のプラットフォーム依存オプション

  1. JACOB を使用する (win32 のみ: com アクセス)
于 2010-02-03T16:46:05.313 に答える
0

あなたが探しているものを理解しているかどうかわかりません。

C コードを Java に組み込み、gcj なしでネイティブ バイナリを作成しようとしている場合は、運が悪いと思います。C を Java に含めることはできますが、これは主に Java プログラムであり、実行のたびに JVM が必要になることを意味します。gcj を自分でコンパイルするのを妨げているものはありますか?

于 2010-02-03T16:22:59.660 に答える