Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(main class ソース)
閲覧数:681
掲示板(main class ソース)
名前
題名 main class ソース
質問内容

質問を評価する
(0ポイント)
以下のABC3つは いづれもJbuilderでのコンパイル+実行は正常に行くます
Aは既に作られていたものです。B,CはJNPLファイルを作る過程で助言を元に作成したものです
が どう違いがあるか 最も正しいものが 分からないもので助言をお願いします 
A:
public class AMyPen222x222Box64 extends Applet {
 略
 public static void main( String[] args ) {
    AMyPen222x222Box64 example = new AMyPen222x222Box64();
    MainFrame frame = new MainFrame( example, 500, 500 );
  }
}

B:
public class AMyPen222x222Box64 extends Applet {
 略 
 public static void main( String[] args ) {
    AMyPen222x222Box64 example = new AMyPen222x222Box64();
   //  for making JNLP to wrap applet and launch it. 
    new com.sun.j3d.utils.applet.MainFrame( new AMyPen222x222Box64(), 500, 500);
  }
}


C:
public class AMyPen222x222Box64 extends Applet {
 略 
 public static void main( String[] args ) {
    //  for making JNLP to wrap applet and launch it. 
    new com.sun.j3d.utils.applet.MainFrame( new AMyPen222x222Box64(), 500, 500);
  }
}
質問日時 2009-01-10 22:42:24
名前
回答内容

回答を評価する
(0ポイント)
AとCはやっていることが同じ。
Aは最初に1行かけてAMyPen222x222Box64の
インスタンスを作っているけど
CはMainFrameとAMyPen222x222Box64の
インスタンスを同時に生成しているね。

Aは変数を利用しているCはしていない。
この違いはAは一旦メモリ上に領域exampleと
frameの参照を準備しているけど
Cはしていないってとこかな。

結果何が変わってくるかと言うと
Aの場合new MainFrame以降に記述する処理で
AMyPen222x222Box64やMainFrameのインスタンスを
参照することができるけどCの場合はできない。
参照する必要がない場合はCの方が
ほんのごくごくちょっぴりパフォーマンス上有利だね。

Bは問題外。
最初に生成しているAMyPen222x222Box64のインスタンスは
なんなのよ。

最後に
com.sun.j3d.utils.applet.MainFrameてフルで書かなくても
importしてあげればMainFrameで十分よ。
回答日時 2009-01-12 12:04:40
名前
回答内容

回答を評価する
(0ポイント)
ありがとうございました
Cを用いてJNLPをつくりました
WebSiteに載せて
クリックするだけで働きました 
回答日時 2009-01-15 17:39:01
名前
回答内容

回答を評価する
(0ポイント)
>最後に
com.sun.j3d.utils.applet.MainFrameてフルで書かなくても importしてあげればMainFrameで十分よ。

ありがとうございます
具体的には
C:
public class AMyPen222x222Box64 extends Applet {
 略 
 public static void main( String[] args ) {
   //for making JNLP to wrap applet and launch it. 
   MainFrame( new AMyPen222x222Box64(), 500, 500);
  }
}
で良いのでしょうか 
それと条件のimport(導入する)するというのはJavaコンソールの設定でなにかするということでしょうか?
(なんだこんなことを!と言われるでしょうか
 お願いします)
試そうとおもったのですが JBuliderでのコンパイルが
(多分のこの間のJava3DのVersion変更でエラー
java.lang.UnsupportedClassVersionError: javax/media/j3d/Node (Unsupported 
major.minor version 49.0)
が出て、出来なくなっています。
これも解決できていないのです
回答日時 2009-01-20 10:41:13
名前
$
回答内容

回答を評価する
(0ポイント)
http://www.google.com/search?q=java+import
回答日時 2009-01-20 13:16:12
名前
回答内容

回答を評価する
(0ポイント)
import com.sun.j3d.utils.applet.*;
早速 ありがとう
Jbuilder Projectのソースを見ると
import com.sun.j3d.utils.applet.*;
がありました
public static void main( String[] args ) {
   //for making JNLP to wrap applet and launch it. 
   MainFrame( new AMyPen222x222Box64(), 500, 500);
  }
では シンボルが見つからないとでるので
コードの書き方が良くないようです
どう略するのでしょうか?
回答日時 2009-01-20 16:24:58
名前
回答内容

回答を評価する
(0ポイント)
new 演算子が消えてしまっていますよ?
回答日時 2009-01-20 16:45:03
名前
回答内容

回答を評価する
(0ポイント)
ありがとうございます
new MainFrame( new AMyPen222x222Box64(),500, 500);
でよろしいでしょうか
エラーがなくなりました
残ったエラーは以下です
java.lang.UnsupportedClassVersionError: javax/media/j3d/Node (Unsupported major.minor version 49.0)
JBuilderでのJDKとJava3Dのバージョンの違いのようですが どのように設定するのか分からないでいます

Javaコンソールは1.6 ですが Jbuilderは以前からは1.4を使い そしてJavaw3Dは1.3と1.5とをInstallしています
ここら当たりがよくわかっていないのです

回答日時 2009-01-20 22:49:27
名前
回答内容

回答を評価する
(0ポイント)
java.lang.UnsupportedClassVersionError: javax/media/j3d/Node (Unsupported major.minor version 49.0)

これは
Java5以降でコンパイルしたものを
Java4で実行しようとした場合なんかに発生するのよ。
コンパイルしたバージョンよりも
以前のバージョンで実行しちゃダメ。
これJavaに限らず全てのことに言えること。
回答日時 2009-01-21 10:59:34
名前
$
回答内容

回答を評価する
(0ポイント)
理解してないのに、次から次へとやってるからどんどん分からなくなるんじゃないのか。
回答日時 2009-01-21 11:13:20
名前
回答内容

回答を評価する
(0ポイント)
ありがとうございます
現状D:\NagataJa\saiga3D\classesはJbuilderでコンパイルしたものです
其の上で Dosで
D:\NagataJa\jdk1.4\bin\java -classpath "D:\NagataJa\saiga3D\classes" AMyPen222x222Box64
は実行されます
D:\NagataJa\jdk1.6\bin\java -classpath "D:\NagataJa\saiga3D\classes" AMyPen222x222Box64
は実行されずに
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Node
Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Node
Could not find the main class: AMyPen222x222Box64.  Program will exit.
の表示になります
なお、Java3D1.3.1 Java3D1.5.1どちらがそれぞれに働いているのかは調べた方がわからずにいます
どうちらもInstallしましたが。

どうして 1.4で実行できて 最新1.6で実行できないのでしょうか?
回答日時 2009-01-22 15:10:52
名前
回答内容

回答を評価する
(0ポイント)
>どうちらもInstallしましたが。

俺は、Java3Dについてはネットで漁っただけだが。
もし、そのときに見つけた
「Java3Dはインストール時に対象のJDKを聞いてくる」
ってのが、Java3D1.3.1のJava3D1.5.1の両方に当てはまるのなら、
さらに、対象がJDK1.4とJDK1.6なら、
合計4回、Java3Dをインストールする必要があることになる。

仮定を重ねてはいるが、確認する労を払う価値はあると思うんだ。
どうかね。

>どうして 1.4で実行できて 最新1.6で実行できないのでしょうか?

できなくたって、文句を言うことじゃない。
1.6は1.6として動作することが第一。
つかわれるのかどうかわからないようなものを
いつまでも引きずっていても仕方ない。

それと。
尻切れなスレッドを何本もまき散らしてんじゃないよ。

一度に考えることは、ひとつだけにしたまえ。
回答日時 2009-01-22 15:31:49
名前
回答内容

回答を評価する
(0ポイント)
>合計4回
おっと。
もしライブラリ・ファイルの名称が同じだったら
上書きしちまうことになるな。
「単一のJDKに複数のJava3D」は回避した方がよかろう。
回答日時 2009-01-22 15:46:58

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道