今まで使用していたtomcat3.1に変えてtomcat3.2.2をダウンロードして
動作させようとしました。
tomcatを起動して、JSPやServletのサンプルページは問題なく表示されました。

しかし、ディレクトリリストをブラウザ上に表示させようとしたところ、
以下のようなエラーが出てしまいました。
(ディレクトリリストは、URLをディレクトリ部分まで指定した際に、
そのディレクトリ内のファイル一覧が表示されるアレです)
思うに、ファイルリストの、タイムスタンプを表示させようとして、
木曜日を表す「木」という部分でエラーが発生しているかと思います。

これはどこか設定すれば修正できるものでしょうか?
ちなみにtomcat3.1を使用していたときは、問題なくディレクトリリストを
表示することができました。

よろしくおねがいします。

環境:
Windows2000
Tomcat3.2.2(バイナリ版)
JDK1.3

java.io.IOException: Not an ISO 8859_1 character:木
at org.apache.tomcat.core.BufferedServletOutputStream.print(BufferedServletOutputStream.java:221)
at org.apache.tomcat.request.DirHandler.doService(StaticInterceptor.java:687)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
.....

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

A 回答 (1件)

私も表示できませんでした。


どうやらデフォルトエンコードが3.2.xからISO-8859-1になってしまったようでその変更に伴うソースコードの修正がなんというか・・・いまいちのようです。

server.xmlのStaticInterceptorでsuppress="false"でファイルリスト表示なのでtrueにして非表示でこの苦難を乗り越えるという手もあります。

なんか根本的解決からかけ離れているのでもうひとつの方法を、問題のソースコードはStaticInterceptor.javaの532行目以降です

String charset = LocaleToCharsetMap.getCharset(Locale.getDefault());
if (charset == null || charset.equalsIgnoreCase("ISO-8859-1"))
res.setContentType("text/html");
else
res.setContentType("text/html; charset=" + charset);

他の部分でもやっているようにこんな感じにすべきだと思います。でもいくらオープンソースだからって勝手にコード修正してコンパイルして動かすのもねぇ。本来なら報告すべきなんだろうけど英語レベルが・・・

最後にファイルリストをtomcatではなくapacheにまかせるという方法があります。これは当然apacheとの連携が必要で説明が冗長になりますので割愛させていただきます。詳細はtomcatドキュメントの「Tomcat とApache の連携方法」をどうぞ。

#海の向こうのソフトを使うと大抵日本語にまつわる潜在的なバグに悩まされる

参考URL:http://www.ingrid.org/jajakarta/site/translation …
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

>どうやらデフォルトエンコードが3.2.xからISO-8859-1になってしまったようで
やはりそうだったのですか。

現在私がtomcat使用しているのは、自分のJava勉強のために使っているだけなので、
勝手にソースを直して動作させるか、またはApacheと連携して使用しようかと思います。

自分の設定が悪いのではなかったようなので、安心しました。
ありがとうございました。

お礼日時:2001/06/18 16:58

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

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

Qimportするには java.io.*; import org.apache.log4j.*;

EclipseでJavaの開発をしています。
import java.io.*;
import org.apache.log4j.*;
がエラーになります。
多分ライブラリーに入れる必要があるのだと思いますが、その方法について
教えて下さい。宜しくお願い致します。

Aベストアンサー

プロジェクトフォルダを右クリック→「ビルド・パス」→「ビルド・パスの構成」
あるいはプロジェクトフォルダを右クリック→「プロパティ」→「Javaのビルド・パス」

で、ライブラリがプロジェクトフォルダ配下に存在しているなら「Jarの追加」
プロジェクトフォルダ以外の場所にあるなら「外部Jarの追加」で追加できます。

ちなみにjava.ioはJ2SEに含まれているので(「JREシステムライブラリ」があるはずなので)
追加しなくても良いです。

Qapache2.2とtomcat6.0(ssl設定済)の連携に関して質

apache2.2とtomcat6.0(ssl設定済)の連携に関して質問です。
環境(windows 2003 server,JDK1.6,eclipse3.5,struts1.3,postgresql8.4)

apacheを使用して公開したいのですが、tomcatのssl設定が絡んでいる関係でうまくいきません。
tomcatでsslを設定せず、apacheでsslを設定した方が良いのか。
tomcatとapache両方でssl設定をした方が良いのか。
tomcatでsslを設定しているとapache2.2とtomcat6.0の連携はできないのか。
または、やり方が違うのか。
教えてください。


tomcat(ssl設定済)をapacheに連携したいのですが、Apache2.0以前の時と異なり、mod_jk/mod_jk2は要らなくなったみたいなので、インターネットを調べた結果

■server.conf
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
をコメント
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
を追加

■httpd.conf
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
コメントを解除

<Location /jsp/>
ProxyPass ajp://localhost:8009/jsp>
</Location>

apache2.2とtomcat6.0(ssl設定済)の連携に関して質問です。
環境(windows 2003 server,JDK1.6,eclipse3.5,struts1.3,postgresql8.4)

apacheを使用して公開したいのですが、tomcatのssl設定が絡んでいる関係でうまくいきません。
tomcatでsslを設定せず、apacheでsslを設定した方が良いのか。
tomcatとapache両方でssl設定をした方が良いのか。
tomcatでsslを設定しているとapache2.2とtomcat6.0の連携はできないのか。
または、やり方が違うのか。
教えてください。


tomcat(ssl設定済)をapacheに連携したい...続きを読む

Aベストアンサー

・tomcat の SSL設定を無効にする。
・httpd 側の SSL設定を有効にする。
・httpd 側の SSL ディレクティブ設定内から、tomcat に「mod_proxy_ajp」を使って、転送する。

Qorg.apache.tools.zip.* を使って圧縮したZIPファイルを開くとエラーとなってしまう

お世話になります。

開発環境は以下のとおりです。
開発ツール NetBeans IDE 6.5
JDK 1.6.0_11
OS Windows XP SP2
ant.jar version 1.7.1

はじめ、JDK付属の「java.util.zip.ZipOutputStream」,「java.util.zip.Entry」を用いて、
ZIPファイルを作成していたのですが、
日本語名のファイルを圧縮すると文字化けしてしまい、
調べてみるとJakart Ant内のant.jarの「org.apache.tools.zip.ZipOutputStream」,「org.apache.tools.zip.Entry」を使って
import宣言を変えてsetEncodingしてしまえば簡単に出来るという情報がありました。

早速やってみたのですが、
1.ZIPファイルは作成される。このときファイルサイズがjava.util.zip.*を使ったときと同じ
2.LhaplusやWinRARといった解凍ツールを使って解凍するとエラーが
発生して中身がない
3.日本語が含まれないファイルを圧縮・解凍しても同じ現象
4.java.util.zip.* を使ったときは正常に圧縮・解凍できる(文字化けはしていますが・・・)
といった状況になってしまいました。

ロジックを何度も見直し、ZipOutputStreamのflush、closeもしっかり行っていますし、CRC32の設定やファイルサイズの設定も手順どおりにやっているつもりです。

どなたかご存知のかたがいらっしゃいましたらご教授の程、よろしくお願いいたします。

お世話になります。

開発環境は以下のとおりです。
開発ツール NetBeans IDE 6.5
JDK 1.6.0_11
OS Windows XP SP2
ant.jar version 1.7.1

はじめ、JDK付属の「java.util.zip.ZipOutputStream」,「java.util.zip.Entry」を用いて、
ZIPファイルを作成していたのですが、
日本語名のファイルを圧縮すると文字化けしてしまい、
調べてみるとJakart Ant内のant.jarの「org.apache.tools.zip.ZipOutputStream」,「org.apache.tools.zip.Entry」を使って
import宣言を変えてsetEncodingしてしまえば簡単に...続きを読む

Aベストアンサー

具体的なコードが無いので何とも言いようが無いのですが、
以下のコードで試してみてください。
私の環境では、問題なく動作しているクラスです。

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipException;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;


/**
*
* 複数のファイル及び、サブディレクトリを含めたディレクトリを
* zip圧縮・解凍する為のクラスです。
*
* @author HarukaV49
*
*/
public class FileZip {

private static final int EOF = -1;
private static final int ZIP_BUFF_SIZE = 1024;

/**
* デフォルト(ファイル名解析)エンコーダを使用してファイル及びディレクトリをZIP圧縮します。
* @param zipFilename 作成されるZIPファイル名
* @param targetFiles 圧縮対象のファイル及びディレクトリ名列
* @return 作成されたZIPファイル
* @throws ZipException ZIP例外
* @throws FileNotFoundException ファイル例外
* @throws IOException IO例外
*/
public static File zip(String zipFilename, String... targetFiles) throws ZipException, FileNotFoundException, IOException {
return zip(zipFilename, targetFiles, null);
}
/**
* ファイル及びディレクトリをZIP圧縮します。
* @param zipFilename 作成されるZIPファイル名
* @param targetFiles targetFiles 圧縮対象のファイル及びディレクトリ名配列
* @param encoding ファイル名解析エンコーダ名(<A HREF="http://java.sun.com/javase/6/docs/technotes/guides/intl/encoding.doc.html">一覧</A>)
* @return 作成されたZIPファイル
* @throws ZipException ZIP例外
* @throws FileNotFoundException ファイル例外
* @throws IOException IO例外
*/
public static File zip(String zipFilename, String[] targetFiles, String encoding) throws ZipException, FileNotFoundException, IOException {
int n = targetFiles.length;
File[] files = new File[n];
for(int i=0; i<n; i++) {
files[i] = new File( targetFiles[i] );
}
return zip( new File(zipFilename), files, encoding);
}
/**
* ファイル及びディレクトリをZIP圧縮します。
* @param zipFile 作成されるZIPファイル
* @param targetFiles targetFiles 圧縮対象のファイル及びディレクトリ配列
* @param encoding ファイル名解析エンコーダ名(<A HREF="http://java.sun.com/javase/6/docs/technotes/guides/intl/encoding.doc.html">一覧</A>)
* @return 作成されたZIPファイル
* @throws ZipException ZIP例外
* @throws FileNotFoundException ファイル例外
* @throws IOException IO例外
*/
public static File zip(File zipFile, File[] targetFiles, String encoding) throws ZipException, FileNotFoundException, IOException {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));
out.setEncoding(encoding);
for(int i=0; i<targetFiles.length; i++) {
int deleteLength = targetFiles[i].getPath().length() - targetFiles[i].getName().length();
zip(out, targetFiles[i], deleteLength);
}
out.close();
return zipFile;
}
private static void zip(ZipOutputStream out, File targetFile, int deleteLength) throws IOException {
if( targetFile.isDirectory() ) {
File[] files = targetFile.listFiles();
for(int i=0; i<files.length; i++) {
zip(out, files[i], deleteLength);
}
} else {
ZipEntry target = new ZipEntry( targetFile.getPath().substring(deleteLength) );
out.putNextEntry(target);
byte buf[] = new byte[ZIP_BUFF_SIZE];
int count;
BufferedInputStream in = new BufferedInputStream( new FileInputStream(targetFile) );
while( (count = in.read(buf, 0, ZIP_BUFF_SIZE)) != EOF ) {
out.write(buf, 0, count);
}
in.close();
out.closeEntry();
}
}

/**
* デフォルト(ファイル名解析)エンコーダを使用してZIPファイルを解凍します。
* @param filename ZIPファイル名
* @param outDir 解凍先ディレクトリ名
* @return 解凍されたファイルまたはディレクトリ
* @throws ZipException ZIP例外
* @throws FileNotFoundException ファイル例外
* @throws IOException IO例外
*/
public static File unzip(String filename, String outDir) throws ZipException, FileNotFoundException, IOException {
return unzip(filename, outDir, null);
}
/**
* ZIPファイルを解凍します。
* @param filename ZIPファイル名
* @param outDir 解凍先ディレクトリ名
* @param encoding ファイル名解析エンコーダ名(<A HREF="http://java.sun.com/javase/6/docs/technotes/guides/intl/encoding.doc.html">一覧</A>)
* @return 解凍されたファイルまたはディレクトリ
* @throws ZipException ZIP例外
* @throws FileNotFoundException ファイル例外
* @throws IOException IO例外
*/
public static File unzip(String filename, String outDir, String encoding) throws ZipException, FileNotFoundException, IOException {
return unzip( new File(filename), new File(outDir), encoding );
}
/**
* ZIPファイルを解凍します。
* @param filename ZIPファイル
* @param outDir 解凍先ディレクトリ
* @param encoding ファイル名解析エンコーダ名(<A HREF="http://java.sun.com/javase/6/docs/technotes/guides/intl/encoding.doc.html">一覧</A>)
* @return 解凍されたファイルまたはディレクトリ
* @throws ZipException ZIP例外
* @throws FileNotFoundException ファイル例外
* @throws IOException IO例外
*/
public static File unzip(File filename, File outDir, String encoding) throws ZipException, FileNotFoundException, IOException {
ZipFile zipFile = new ZipFile(filename, encoding);
@SuppressWarnings("unchecked")
Enumeration<ZipEntry> enumeration = zipFile.getEntries();
while( enumeration.hasMoreElements() ) {
ZipEntry entry = enumeration.nextElement();
if( entry.isDirectory() ) {
new File(entry.getName()).mkdirs();
} else {
File file = new File(outDir, entry.getName());
file.getParentFile().mkdirs();
FileOutputStream out = new FileOutputStream(file);
InputStream in = zipFile.getInputStream(entry);
byte[] buf = new byte[ZIP_BUFF_SIZE];
int size = 0;
while( (size = in.read(buf)) != EOF ) {
out.write(buf, 0, size);
}
out.close();
in.close();
}
}
zipFile.close();
return outDir;
}

}

具体的なコードが無いので何とも言いようが無いのですが、
以下のコードで試してみてください。
私の環境では、問題なく動作しているクラスです。

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipException;

import org.apache.tools.zip.ZipEntry;
impo...続きを読む

Qjava eclipse apache tomcat 9.0 ファイル作成時のアクセス拒否

javaの初心者です。

eclipse で apache tomcat9.0 を使って、職場でwebアプリを作成しています。
javaで下記のようにあるフォルダにファイルを作成するところで、「java.io.IOException: アクセスが拒否されました。」というエラーがでます。

File file = new File("\\server\file1.txt")
if (file.exists()){

}else{
try{
file.createNewFile();
break;
}catch(IOException e){
System.out.println(e);
}
}

apache tomcat9.0 を動かしているサーバーは、active directory に登録されているドメインユーザーでログインして動かしています。
tomcatのログオンのタブのアカウントが違うアカウントだったので、上記ドメインユーザーに変更しました。また、フォルダにもセキュリティで上記ドメインユーザーにフルコントロールの権限を追加しましたが、エラーが解消されません。

ちなみに、別のフォルダでeveryone にフルコントロールを付与した場合は、ファイルを作成できました。
しかし、事情により、セキュリティを厳しくしたいため、everyoneには権限を付与したくありません。

上記エラーの解消方法をご教授いただければ幸いです。

javaの初心者です。

eclipse で apache tomcat9.0 を使って、職場でwebアプリを作成しています。
javaで下記のようにあるフォルダにファイルを作成するところで、「java.io.IOException: アクセスが拒否されました。」というエラーがでます。

File file = new File("\\server\file1.txt")
if (file.exists()){

}else{
try{
file.createNewFile();
break;
}catch(IOException e){
System.out.println(e);
}
}

apache tomcat9.0 を動かしてい...続きを読む

Aベストアンサー

「\」という文字を文字列の中に書こうと思ったら「\\」としなければならない, ってことを忘れてるとか?

Q「org.apache.jsp」内のファイルは削除しても大丈夫?

サーブレットを勉強しています。Eclipseを使っています。

「org.apache.jsp」にあるjavaファイルは削除しても大丈夫なのでしょうか?削除してもJSPファイルがあれば、ブラウザから動かした時に、また問題なく動くのでしょうか?

PCが固まってしまって、強制終了したのですが、次に起動した時にそれまではエラーになっていなかった「org.apache.jsp」内のファイルがいくつかエラーになっていました。「org.apache.jsp」内のファイルというのはJSPファイルをいったんサーブレットに変換したもの(?)が格納されているのですよね?

ということは、削除しても、JSPファイルがあれば、またプログラムを動かせば新たに生成されて問題なく、動くのでしょうか?

よろしくお願いします。

Aベストアンサー

Javaファイルを削除しても問題ないです。

classファイルのタイムスタンプを比較して、Javaファイルを作成するか判定しているはずなので、classファイルも削除するほうがよいと思います。


人気Q&Aランキング

おすすめ情報