RMIのテストプログラムを実行してみたいのですが、タイトルのエラーが出てうまくいきません。プログラム自体は簡単なHelloWorldもので、タイプミスなどはないと思うのですが…
回避策を教えてください。

エラーはこんなのです。
java.security.AccessControlException: access denied(java.net.SocketPermission 192.168.1.3:1099 connect,resolv)

このQ&Aに関連する最新のQ&A

A 回答 (1件)

おつかれさまです、



JDKインストールディレクトリ:\jdk1.3\jre\lib\security\java.policy
ファイルを以下のように書き換えてください。

<変更前>
// Standard extensions get all permissions by default

grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};

<変更後>
// Standard extensions get all permissions by default

grant{
permission java.security.AllPermission;
};
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjava.security.AccessControlException

JavaアプレットでHTTP接続して、データを受信するプログラムを書こうとしているのですが、以下のエラーの意味がわからず困っています。

java.security.AccessControlException:
access denied(java.net.SocketPermission xxxx.com:80 connect,resolve)

URLを指定して、アプレット上に受信データを表示させたいのですが、
無理なのでしょうか?

Aベストアンサー

JDKのバージョン等不明ですが

C:\jdk?.?\jre\lib\security\java.policy


// Standard extensions get all permissions by default

grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};



// Standard extensions get all permissions by default

grant{
permission java.security.AllPermission;
};

に書き換える

Qjava通信について

アプレットビューアは 通信成功できますが
HTMLから実行すると失敗します

so = new Socket( "localhost", 80 );

この部分が失敗してるようです
なぜ起こるんでしょうか ?
解決方法を教えてください。



//html
<html><body>
<applet code = "a.class" width = "370" height ="530"></applet>
</body></html>



 



//<applet code = "a.class" width="400" height = "200"></applet>

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class a extends java.applet.Applet
implements ActionListener{

TextField tf;
Button b;
TextArea t;
Panel p, p1;


String str = "http://localhost/cgi-bin/a.cgi";

public void init(){
tf = new TextField( 32 );
b = new Button( "Post" );
t = new TextArea( 20, 48 );
b.addActionListener( this );

p = new Panel();
p.add( new Label( "String" ) );
p.add( tf );
p.add( b );

p1 = new Panel();
p1.add( t );

add( p );
add( p1 );
}

public void actionPerformed( ActionEvent e ){

String str;
if( e.getSource() == b ){
t.setText( sen( tf.getText() ) );
}
}


private String sen( String a ){  

Socket so = null;
InputStreamReader in = null;
OutputStream os = null;
String str1 = new String();

try {
t.setText( "aa" );
so = new Socket( "localhost", 80 );
t.setText( "bb" );
in = new InputStreamReader( so.getInputStream() );
os = so.getOutputStream();

}catch( Exception e ){
return "Error!";
}

String H = "POST " + str + " HTTP/1.0\n";
H += "Content-Length:" + String.valueOf( a.length() ) + "\n\n";
String st = new String( H + a );

try{
os.write( st.getBytes() );
}catch( Exception e ){
return "Error!";
}

str1 = "Send:\n" + st;
boolean bo = true;
StringBuffer sb = new StringBuffer();
int s;

while( bo ){

try{
s = in.read();  
if( s == -1 ) bo = false;
else sb.append( (char)s );

}catch( Exception e ){
bo = false;
}
}
str1 += "\nResv:\n" + sb.toString();
return str1;
}
}

アプレットビューアは 通信成功できますが
HTMLから実行すると失敗します

so = new Socket( "localhost", 80 );

この部分が失敗してるようです
なぜ起こるんでしょうか ?
解決方法を教えてください。



//html
<html><body>
<applet code = "a.class" width = "370" height ="530"></applet>
</body></html>



 



//<applet code = "a.class" width="400" height = "200"></applet>

import java.awt.*;
import java.awt.event.*;
i...続きを読む

Aベストアンサー

著名付きアプレットというのをご存知でしょうか?アプレットは性質上、クライアントの任意ファイルを操作したり、ネット上にアクセスできたりします。個人情報の漏洩やスパイウェア等の悪質な事もできてしまいます。通常、それを防止する為、勝手にクライアントのリソースを操作できないような仕組みになっています。ただ、これでは善意的なアプレットはダメなの?という話になってきますので、著名付きアプレットというものが存在します。検索サイトで「SIGNED APPLET」等で検索すると幾らでも出てきます。ここで説明は長ーーーくなってしまいますので、関連参考書やインターネットで別途お調べください。

何にしましても、上記問題を解決する方法として、自分のパソコンでは著名つきであろうがなかろうが実行させたいという了見でご説明します。
基本的にアプレットビューアで実行できているので、プログラム上で修正する部分はありません。
方法は幾つかありますが、jre(JDKでなくJREです)がインストールされているディレクトリの中に、lib\security\java.policyというファイルがありますので、実行させたいクライアントPCでエディターとか使って中身を修正します。
grant codeBase "file:${{java.ext.dirs}}/*" {
なっていましたら、
grant {
という形に修正&保存します。
これでOKです。

ちなみに、ローカルで通信を行うなら、各クライアントPCを上記の方法で修正してしまってもOKかと思います。ただ、インターネットに公開したいのであれば、やはり著名付きアプレットにする必要があります。

以上、色々と方法はあるかと思いますが、一例としてご参考まで。

著名付きアプレットというのをご存知でしょうか?アプレットは性質上、クライアントの任意ファイルを操作したり、ネット上にアクセスできたりします。個人情報の漏洩やスパイウェア等の悪質な事もできてしまいます。通常、それを防止する為、勝手にクライアントのリソースを操作できないような仕組みになっています。ただ、これでは善意的なアプレットはダメなの?という話になってきますので、著名付きアプレットというものが存在します。検索サイトで「SIGNED APPLET」等で検索すると幾らでも出てきます。ここで...続きを読む

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

QWin7でアクセスを拒否されました」が表示される

モノ好きでPCをXPからWindows7に移った(現在併行)のですが、操作に右往左往しています。
そのうちの一つ。
ドキュメントにしろあちこちで「アクセス拒否されました」と言われ中身を見ることが出来ません。
例えば、ライブラリのドキュメントの中のマイドキュメント、My Weblog。
パブリックのドキュメント
ホームグループの中のcookies,MyDocument,スタートメニュー等々です。
見られる処もあります。
保存した先を見つけられない現象が度々あり困っています。XPではエクスプローラーでフォルダーをたどるとほとんど見られました。
W7に於いて、隠しファイルは別にしても、XPの時のように自由に見られるようにするにはどうしたら良いのでしょうか。ご助言をお願い致します。

Aベストアンサー

おはようございます。

アクセス拒否は、

(1) 最初に管理者権限のあるユーザーでログインします
(2) フォルダーを右クリックし、プロパティを選択。
(3) セキュリティタブをクリック、下の詳細設定をクリック。
(4) 所有者タブをクリック、編集をクリックし一覧から
新しい所有者(Administrators権限のあるアカウント)を選択し、
「サブコンテナとオブジェクトの所有権を置き換える」にチェックしてOKをクリック。
(5)「内容を読み取るのに必要なアクセス許可がありません。
デェレクトリの云々」というメッセージが表示されたら「はい」をクリックでOK。


エクスプローラーでツリー状に展開するには

(1)フォルダを開き左上にある整理をクリック→
プルダウンメニューのレイアウトの
ナヴィゲーションウィンドウにチェック

(2)コントロールパネルからフォルダーオプションをクリック、
全般タブのナビゲーションウインドウの
自動的に現在のフォルダーまで展開するにチェックを入れればOKです。


7はスタートメニューの「プログラムとファイルの検索」とタスクバーにショートカットが
使い勝手が良くて気に入っています。

おはようございます。

アクセス拒否は、

(1) 最初に管理者権限のあるユーザーでログインします
(2) フォルダーを右クリックし、プロパティを選択。
(3) セキュリティタブをクリック、下の詳細設定をクリック。
(4) 所有者タブをクリック、編集をクリックし一覧から
新しい所有者(Administrators権限のあるアカウント)を選択し、
「サブコンテナとオブジェクトの所有権を置き換える」にチェックしてOKをクリック。
(5)「内容を読み取るのに必要なアクセス許可がありません。
デェレクトリの云々」というメッセー...続きを読む

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Q使っているIEが32bitか64bitか確認したい

windows7 homeです。今デスクトップにショートカットを作成して普段から使っているIEが32bit版IEか64bit版IEなのかわからなくなってしまいました。

そのIEがどちらなのか確認する方法はありませんか?バージョン情報には載っていませんでした。

Aベストアンサー

メニューのヘルプからバージョン情報を見て、
64-bit Editionなら64bit版、書いてなければ32bit版。

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

Q-Applet表示でのjava.lang.ClassNotFoundException-

お世話になります。

只今、Appletの操作を勉強しています。

先日まで動いていた、Appletが急に表示されなくなってしまいました。

「appletviewer」で実行すると表示されるのですが、HTMLを叩くと表示されません。

JAVAコンソールには・・・

java.lang.ClassNotFoundException: javax.swing.JComboBox
at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java)
at java/lang/ClassLoader.loadClassInternal (ClassLoader.java)
at DemoApplet.init (DemoApplet.java)
at com/ms/applet/AppletPanel.securedCall0 (AppletPanel.java)
at com/ms/applet/AppletPanel.securedCall (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)

・・・と、表示されています。

クラスパスの問題であれば、「appletviewer」でも動かないだろうし・・・何が問題なのでしょうか??

・・・行き詰まってます。

お世話になります。

只今、Appletの操作を勉強しています。

先日まで動いていた、Appletが急に表示されなくなってしまいました。

「appletviewer」で実行すると表示されるのですが、HTMLを叩くと表示されません。

JAVAコンソールには・・・

java.lang.ClassNotFoundException: javax.swing.JComboBox
at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java)
at java/lang/ClassLoader.loadClassInternal (ClassLoader.java)
at DemoApplet.init (DemoApplet.java)
at com/ms/app...続きを読む

Aベストアンサー

>AppletTest.java:1: パッケージ com.sun.java.swing は存在しません。
import com.sun.java.swing.*;

パッケージ com.sun.java.swingは、swingall.jarにあります。
>javac -target 1.1 -classpath swingall.jar AppletTest.java
のように指定しているようですが、

C:\java\appletに、swingall.jarはありますか?

私が示している例を、分からないまま、そのまま実行するのではなく、
自分の環境に合わせて実行してくださいね。

QJAVAアプレットがブラウザで実行できない

JAVA超初心者です。
じつは、Java2SDK1.4を使ってコンパイルしているんですが、
コンパイルしてできた「classファイル」をブラウザで実行できないんです。
四角い灰色のものがでてきて、マウスを重ねると、
{ load: class **** not found }とステータスバーに表示されるだけです。
(*はファイル名)
appletviewerというJAVAの動作を見るものだと、実行できるのですが・・・。

Web上で配布されているclassファイルはブラウザでも実行できます。
配布されているのと同じソースでやっても自分でコンパイルすると、ブラウザで実行できません。

ブラウザはIE6なので、JAVAに対応してると思います。

どうすればいいのでしょうか?
コンパイルに問題があるのでしょうか?

Aベストアンサー

>CLASSPATHは設定されていませんでした。
>>基本的に 環境変数 CLASSPATH は設定しない方が良いですよ。
>と言われた通り設定しないでそのままにしておきます。

とは、どう言うことでしょうか?
どう言う確認をされましたか?
何を元にCLASSPATH は設定されていないと判断しましたか?
それじゃ、CLASSPATH を設定してみましたか?
とにかく、動かないのなら、確認できる全ての事を行って下さい。

>CODEBASEについてですが、
>MS-DOSとかでは「\」をつかいますが、
>HTMLのばあいは「/」をつかう気がするのですが・・・。
>まちがっていたら教えてください。

間違いです。
HTML が 「/」を使うと言うわけではありません。
基本的な事です。ご自分ではどこまで調べられましたか?
PATH と URL の違いを勉強してください。
そうすると、今回の場合、どちらを使うのかがはっきりするはずです。

こちらに関しても、CLASSPATH の時と同じです。
いろいろと考えられる限り設定を変更してテストしてみて下さい。

以前に私が紹介した Java House の「スペシャルトピック」は読みましたか?
その件については、一切触れておられないようですが。。。
CLASSPATH については、理解出来たのでしょうか?

いままでのご質問内容から kidou00さんの場合は、Javaの勉強をする前に
ファイルシステムについて勉強された方が良いかと思います。(今回はWindowsのファイルシステム)
ファイルシステムを理解せずに、プログラミングをしても決して良いプログラム
は出来ないと思います。
後、アプレットや、サーブレットを勉強する前には、インターネットの基礎知識
を勉強する必要があります。プロトコルや、URIに関しても理解していないと良い
プログラムは出来ません。
(完全に理解する必要はありませんが、概要は知っていないと駄目です)
もう少し視野を広げて勉強してください。

>CLASSPATHは設定されていませんでした。
>>基本的に 環境変数 CLASSPATH は設定しない方が良いですよ。
>と言われた通り設定しないでそのままにしておきます。

とは、どう言うことでしょうか?
どう言う確認をされましたか?
何を元にCLASSPATH は設定されていないと判断しましたか?
それじゃ、CLASSPATH を設定してみましたか?
とにかく、動かないのなら、確認できる全ての事を行って下さい。

>CODEBASEについてですが、
>MS-DOSとかでは「\」をつかいますが、
>HTMLのばあいは「/...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング