問題タブ [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.
java - Java5のスキャナークラスはjava.lang.NullPointerExceptionをスローします
java5でスキャナークラスを使用していますが、次のコードで例外がスローされます。
スタックトレースは次のとおりです。
この例外の原因を誰かが知っていますか?
java - 1 つの単純なコマンドでコマンドラインから一連の .Java ファイルから .Jar ファイルに移行する
私は周りを検索しましたが、ディレクトリ内の多数の .java ファイルを取得し、.class ファイルにコンパイルして、それらをすべて .jar に自動的に貼り付ける単純なコマンドライン ツールを見つけることができません。私はおそらく自分でスクリプトを書くことができますが、これは車輪の再発明にまったく興味がない領域の 1 つです (私は Djikstra のアルゴリズムを何百万回もコーディングしますが、このようなことで時間を無駄にしたくありません)。
実行可能なjarファイルを生成するために、ディレクトリに移動してその中のファイルを呼び出すだけのgccやghcに似たシンプルなツールはありますか? 私はgcjに期待していましたが、どうやらそれは0と1にコンパイルされます。素晴らしいですが、私が探しているものではありません。
IDE を提案しないでください。netbeans、eclipse、bluej などは扱いたくありません。これらは素晴らしいソフトウェアですが、私はエンタープライズ コードを書いているわけではないので、単純なテキスト エディタで書きたいと思っています。
乾杯!
android - gcj コンパイルしてアームする
Android ndk用のマイクロlibgcjを構築しようとしています。find をビルドすることはできますが、libulibgcj.a をリンクしようとすると、無効なフォーマット エラーが発生します。gcjがアームにコンパイルされていないためだと思います。libgc.a と libulibgcj.a の 2 つの静的ライブラリがビルドされます。すべて c コードである libgc.a をリンクできます。Libulibgcj.a は、c++ と Java の組み合わせです。Android ndk binフォルダーにarmeabi-gcjがないことに気付いたので、Javaコードをコンパイルして武装する方法はありますか?
java - GCJ を使用して Java サーブレットやその他の多くのクラスをコンパイルする方法は?
現在、暗号化のためにデータを処理、メッセージ、および外部 HSM モジュールに転送する Java で記述されたバックエンド システムがあります。当時は十分に安全だと考えられていました。ただし、最近の監査結果では、すべてのバックエンド Java クラスも保護する必要があります。
GCJ について読んだことがあります。GCJ は Java Byte コードをネイティブ コードにコンパイルします。これにより、リバース エンジニアリングが確実に難しくなります。
30時間以上グーグルで試してみた後、コンパイルすらできませんでした。5 つのサーブレットと他の何百もの Java クラスで GCJ を使用してコンパイルできませんでした。それはまた、私はまだTomcatでテストしていないことを意味します.これがどこに行くのかわかりません.
だからここに私が知りたい質問があります:
1) Java sevlets を GCJ でコンパイルし、Tomcat で実行することに成功した人はいますか? はいの場合、Java サーブレットのコンパイルに直接関連するガイドまたはサンプルはありますか?
2) Java クラスを保護する上で、私は正しい道を進んでいますか? そうでない場合、より良いアプローチは何ですか?
java - コンソール入力待機中であってはならない場合
Java を使い始めたばかりで、コンソール入力が適切に機能するようにしようとしています。コードは次のとおりです。
これは、次のように、入力を 1 回だけ受け取り、入力を出力する必要があります。
しかし、これは何が起こるかです:
したがって、どういうわけか、行Scanner keyboard = new Scanner(System.in);で入力を取得しているように思えます。それを変数strに入れます。gcj を使用して、次のコマンドでコンパイルして実行します。
編集:以前のUbuntu 10.04 32ビットの代わりに、Ubuntu 10.04 64ビットを使用して、別のコンピューターでプログラムを実行しようとしました。同じ方法で実行し、再コンパイルしませんでした。プログラムは正常に動作します。
なぜこのように振る舞うのか、何か考えはありますか?
gcc - mingw / gcj 実行可能ファイルからのプロパティ ファイルの読み込み中に例外が発生しました
binutils-2.22 と gcc-4.6.3 を使用して、Linux で実行され、Windows 実行可能ファイルを生成する gcj クロス コンパイラを構築しました。 . これはすべて、java.util.Calendar を使用しようとするまではうまく機能しますが、すべてが失敗します。
テストプログラム:
以下でコンパイル:
例外:
ソース コードを調べると、java.util.Calendar クラスに次の静的初期化子が含まれていることがわかります。
したがって、この時点で、問題は次のいずれかであると推測しています。
- weeks.properties ファイルが libgcj に組み込まれませんでした。
- それはlibgcjにありますが、私の実行可能ファイルにはありません。
- それは実行可能ファイルにありますが、クラスローダーはそれを見つけることができません。
ここで何が起こっているのか、そしてそれを解決する方法を知っている人はいますか?
それが役立つ場合は、gcj をビルドするために次の構成オプションを使用しました (Ranjit のサイトから)
ありがとう、
バーニー
java - Java をネイティブ コードにコンパイルすると、ソース コードは保護されますか?
今、私はそれを知っています...
十分な時間とリソースがあれば、何でもリバース エンジニアリングできます。
しかし、 GCJのようなツールを使用して Java コードをネイティブ コードにコンパイルすると、逆コンパイルが難しくなるでしょうか? つまり、数分あれば、JD-GUIを使用して .jar を逆コンパイルでき、比較的正確です。「Java から EXE へ」のコンバーターのほとんどは、JVM 用の .exe ランチャーにすぎません。JVM には多くのメリットがありますが、ソース コードのセキュリティはその 1 つではないと私は信じています。
結論: GCJ のようなものを使用して、Java ソース (または .class) ファイルをネイティブ マシン コードにコンパイルできますか。
編集:理想的には、難読化以上のものになるでしょう。特定のプロジェクトは商用ゲームであるため、私たちが探しているのは、ソース コードを理解するだけでなく、最初からソース コードに到達するのをより困難にする方法です。また、Steam が .jar を受け入れるかどうかもわかりません。新しいGreen Lightプロジェクトに提出する予定です。
java - gcj でコンパイルされた Java と XStream を使用。(例外: XmlPullParser を作成できません)
より大きなプロジェクトの一部であるクライアントを強化しています。速度が不足しているため、CNI に切り替えることを余儀なくされたため、GNU-gcj コンパイラ (gnu 4.6.3) でネイティブ コードを生成する必要がありました。
コンパイルとリンクは正常に機能し (-findirect-dispatch フラグのおかげで)、出力の実行に問題はありません。しかし、クライアントとサーバー間の通信になると、クライアントはすぐに切断されます。理由:
[XStreamClient Reader] 警告 - クライアントが切断されました (例外: com.thoughtworks.xstream.io.StreamException: XmlPullParser を作成できません)
(この Exeption は、クライアントの gcj コンパイル バージョンでのみ表示されます。コードを Java インタープリターで実行すると、うまく動作します (ただし、遅すぎます^^)) --> 難しい部分は、ソースを取得できないことです。この例外は、クライアントが使用するコンパイル済み (Java クラス ファイル) ライブラリ内にあるため、この例外が発生する場所のコード。(そして、そのライブラリの作成者に連絡できません)
ライブラリが XppReader を呼び出し、XmlPullParserクラスを作成しようとして失敗したと思います。
XStream (バージョン 1.4.3) ライブラリ (およびその他の必要な *.jar) をアンパックし、作成された *.class ファイルをコンパイルしてからオブジェクト ファイルをリンクすることでバインドします。これは、他のすべてのライブラリでも機能するようです。(私のOS=Ubuntu)
この問題を克服するために私がすでに行ったこと: XStream/XmlPullParser と gcj を集中的に検索し、「xmlpull」ファイルと「kxml2」ファイルを別のバージョンに置き換えました。しかし、何も機能しませんでした。あなたの誰かが解決策の手がかりを持っていますか?
編集:
XmlPullParser の作成が失敗する理由は、 /services/org.xmlpull.v1.XmlPullParserFactory ファイルを含む META-INF ディレクトリが XmlPullParserFactory.newInstance 関数で見つからないためであることがわかりました。これは、*.jar の *.class ファイルのみをコンパイルおよびリンクしたためです。そのため、META-INF ディレクトリを実行可能ファイルにリンクして、関数が見つけてアクセスできる方法を見つけたらすぐに、問題を解決する必要があります。あなたの誰かがそうする方法をすでに知っていますか?
java - Foregin jar の正しい ABI バージョンを GCJ とどのようにリンクしますか?
私は、Minecraft をネイティブ バイナリにコンパイルしようと決めていました。
そのために私は以下を使用しました(おおよそ、最適化は異なる場合があります):
次に、リンクを試みました:
しかし、バイナリを実行すると、次のようになります。
今、私は代わりに使用します:
私は得る:
これをどのように解決することをお勧めしますか?
java - gcj でファイルを個別にコンパイルするにはどうすればよいですか?
gcj (Cygwin バージョン) を使用して 2 つの Java ファイルをコンパイルします
$ gcj --version gcj (GCC) 3.4.4 (cygming スペシャル、gdc 0.12、dmd 0.125 を使用) Copyright (C) 2004 Free Software Foundation, Inc. これはフリー ソフトウェアです。条件のコピーについてはソースを参照してください。保証はありません。商品性や特定の目的への適合性のためでさえありません。
ここに私の2つのJavaファイルがあります:
$ 猫 MyClass.java
$ cat HelloWorld.java
HelloWorld でコードを実行できます
のように別々にコンパイルしたい
それから
問題は私が得ることです