問題タブ [gcj]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
2957 参照

java - GCJ (GNU Compiler for Java) は Web アプリケーションを公開するための実行可能なツールですか?

GCJ を使用してサーバー側アプリケーションを公開することは本当に実行可能ですか? ウェブアプリ?

私の上司は、私たちの (私の) Web アプリケーションをバイナリ実行可能ファイルにコンパイルすることは素晴らしいアイデアだと確信しています。(繰り返しになりますが、彼は理解できる点滅するライトが付いた素敵で小さくてシンプルなものが好きです。) 彼は本能的にこれに問題はないと考えていますが、私は問題と劣化の無限のシリーズしか見ません。プラットフォームの複雑さ、バイト コード、JVM、ライブラリ、オペレーティング システム間の違い、プロセッサ アーキテクチャなどの詳細について彼に話し始めると...まあ...彼の目は輝き、彼は微笑み、彼は、私が幼稚な抵抗をしていると考えていることを明らかにしました.

なぜ彼は単一の魔法の実行可能ファイルが必要なのですか? 彼は、いくつかの「利点」を見ています。

  • バイナリ実行可能ファイルの場合、リバース エンジニアリングを行ってライセンスを回避することは困難です。経営陣は、サーバー ソフトウェアで一般的にチートを行わない大企業に販売しているにもかかわらず、これが起こっているのではないかと常に恐れています。
  • この魔法の実行可能ファイルをダウンロードして実行すると、すべてが機能するというビジョンがあります。(それほど頻繁ではない顧客のインストールを行うために私を送る必要はもうありません。)

それで、私は必須の 20 分間のグーグル検索を実行し、今ここにいます。

私のアプリケーションの背景のビット:

それは何から作られています:

  • Java 6 (Sun の JVM)
  • アスペクトJ 1.6
  • トムキャット6
  • 休止状態 3
  • 春 2
  • さらに 20 個のサポート jar ファイル

機能

  • ストリーミング メディア CMS
  • パフォーマンス重視
  • Linux、Solaris、Windows に展開 (および Mac で開発)

お察しのとおり、私はこの「Java をネイティブ コードにコンパイルする」ことに非常に懐疑的です。Mono (Linux 上の VB) が 2000 年に戻った場所のように聞こえます。しかし、私は過度に悲観的ですか? それは実行可能ですか?これを試すために実際に時間 (数週間ではないにしても数日) を費やす必要がありますか?

他にも同様のスレッドが 1 つあります ( .exe ファイルを生成するための Java コンパイラ オプション) が、少し単純すぎて、リンクが古くなっていて、実際にはサーバー側の質問に対応していません。

親愛なる SOped の皆さん、あなたの情報に基づいた意見は非常に大切にされます。ティア!

0 投票する
2 に答える
504 参照

java - Java外部ライブラリにgcjのCNIを使用した経験のある人はいますか?

しばらくの間、デスクトップ アプリケーションで何らかの作業を行うことに興味があり、最も得意な言語は Java です。ネイティブ実行可能ファイルにコンパイルできるようにしたいので、gcj を使用してコンパイルし、CNI をライブラリに使用することについて共有したい経験がある人はいますか? Swing/SWT だけでなく、ネイティブのツールキットを使用したいと考えていました。

0 投票する
1 に答える
3097 参照

java - GCJ がインポートしたパッケージからクラスを見つけられないのはなぜですか?

小さな Java アプリケーションを Windows 実行可能ファイルにコンパイルしたいと考えています。

アプリケーションは非常に小さく、メイン クラスは 1 つだけですが、Apache POI を使用します。

コンパイルすると、POI Jar をクラスパス引数に入れている限り、すべて正常に動作します。

しかし、リンクに関して言えば、GCJ は POI パッケージ内のクラスの参照を解決できません。メッセージはすべて次のようになります。

アプリケーションをリンクするにはどうすればよいですか?

0 投票する
2 に答える
1014 参照

java - GCJ (jc1.exe) に関する問題

これが StackOverflow で尋ねられるような質問であるかどうかはわかりませんが、とにかく尋ねます。

Windows XP SP3 で (MinGW の一部として) GCJ を使用して、Java クラスを EXE にコンパイルしています。

Java クラスは次のとおりです。

Java ソース ファイルを使用して GCJ を実行すると、次のエラー メッセージが表示されて失敗します。

次に、Java クラスをコンパイルして GCJ を再度実行しましたが、次のエラーで失敗しました。

なぜこれを行っているのですか? GCJ を機能させるにはどうすればよいですか?

0 投票する
1 に答える
3825 参照

java - GCJを使用してコンパイル中に2つのJavaファイルをリンクするにはどうすればよいですか?

私は非常に「Java初心者」であるため、お詫び申し上げます。とにかく、私はこの問題を十分に理解して、簡単な方法で質問し、私が望む答えを得ることができると思います。次のように、両方ともホームディレクトリに2つのファイルがあるとします。

Test.java:

およびTest2.java:

これらのファイルをそのままにしておくと、 " gcj Test.java --main=Test"を実行すると、当然、Test2が未定義であると保存してエラーが発生します。しかし、Test2の場所を指示するために何を追加する必要があるのか​​わかりません。Test.javaの先頭にimport Test2;「」、「」、「」import Test2.*;を追加してみましたが、ここでは明らかに正しい方向に進んでいません。import Test2.java;これらのファイルをリンクしてコンパイルするにはどうすればよいですか?

0 投票する
5 に答える
394 参照

java - Differences when compiling Java with GNU Compiler for Java instead of the Sun JDK

I'm working on a school project where I am required to use the GNU Compiler for Java. I've always worked using the official Sun JDK and now I'm concerned about differences that might complicate my work.

I'm specially interested in which version of Java is the one supported by the latest GCJ compiler

Could someone shed some light in the differences between one or the other?

PS: I searched on google but failed in finding a recent answer

0 投票する
2 に答える
449 参照

java - GCJ で警告を無視する方法

インターフェイスを実装するクラスがいくつかあります。その中には、特定のクラス実装で定義上使用されていないパラメーターを持つメソッドがあるものもあります。たとえば、「Shape」インターフェースは「contains(point)」メソッドを定義する場合がありますが、私の特定のクラスは、1 次元であるため何も含むことができない線を定義するため、常に false を返し、ポイントを使用しません。

しかし、GCJ でコンパイルすると、何百もの「警告: パラメータ x は使用されていません」というメッセージが表示されます。

-Wno-all フラグを使用して警告を無効にしようとしたほか、gcj のマンページに記載されている他のフラグも無効にしましたが、これらは効果がありません。これらの些細な警告を気にしないように GCJ に指示するにはどうすればよいですか?

0 投票する
3 に答える
722 参照

java - Linux 実行可能ファイルのライブラリの参照

Java でアプリケーションを作成し、gcjを使用して正常にコンパイルしました。驚くほどうまく機能しましたが、ハードルにぶつかりました。ライブラリ パスを指定する必要があるため、シェル スクリプトを介してしか実行可能ファイルを実行できません。

必要なライブラリは、SWT、Xerces、および GNU-crypto です。

でコンパイルするときにライブラリを静的にリンクする方法はありますgcjか、またはこれは良い考えではありませんか? または、コンパイル中に (相対) ライブラリ パスを指定できますか?

現在、私のシェルスクリプトは次のようになっています。

0 投票する
3 に答える
897 参照

java - Javaバージョンに基づいて異なるBashコマンドを実行する

UbuntuとFedoraで実行されるJavaプロジェクト用のbashビルドスクリプトを開発しようとしています。Ubuntuはgcjコンパイラを使用し、FedoraはIcedTeaを使用します。

どちらもエラーと警告をわずかに異なる方法で報告します。警告を無視したいと思います(私は知っていますが、一般的には良い考えではありませんが、警告のいくつかは単にばかげています)。

gcjの場合、実行したい:

しかし、IcedTeaの場合、実行したい:

私はまだbashを初めて使用するので、javacバージョンに基づいて一方を他方に対して実行するifステートメントをどのように記述しますか?

0 投票する
2 に答える
1032 参照

java - gcjなしでJavaとCを組み合わせる-CをJavaに移動しますか、それともJavaをCに移動しますか?

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

皆さんの多くは、さまざまな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つを尋ねている場合は、私に知らせてください。