Java プロジェクトの問題と例外の概要

1. JSP ページ キャッシュが原因で ajax データが更新されず、再表示されない

https://blog.csdn.net/iteye_12528/article/details/81443986

ServletActionContext.getResponse.setHeader("Cache-Control","no-store");   
ServletActionContext.getResponse.setHeader("Pragma","no-cache");   
ServletActionContext.getResponse.setDateHeader("Expires", 0);

2.java リソース操作ファイルが FileNotFoundException をスローする

この問題を見つけるのは簡単ではありません. 開発ではリソースの構成ファイルは一般的にフォルダーにあるため、 Resource#getFile() で問題ありませんが、公開時に構成ファイルが JAR にパッケージ化されている場合、 getFile() は無効になるため、ストリーミング方式で読み取るため、展開環境の影響を効果的に回避できます

//报错的读取方式
(new DefaultResourceLoader()).getResource("classpath:conf/sys.properties").getFile();

//正确的读取方式
(new DefaultResourceLoader()).getResource("classpath:conf/sys.properties").getInputStream();

3. Get リクエスト - 特殊記号の問題

プロジェクトでは、アカウントのパスワードを変更するなど、文字列の検証などの機能がよくあります.Java
での Get リクエストは、認識できない特殊な記号を引き起こすことがよくあります.
したがって、そのような文字列の送信リクエストは post リクエストを使用する必要があることに注意してください.

4. jar を参照して NoSuchMethodError エラー、ClassNotFoundException、NoClassDefFoundError を呼び出す

jar が更新され、プロジェクトで呼び出されると、jar は maven によって管理されておらず、サードパーティからの他の jar が導入されているためです。

ClassNotFound 例外: 更新 jar に依存関係パッケージがありません
NoSuchMethodError エラー: 参照されたパッケージに競合があります
例:
1.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory

これは、SSLConnectionSocketFactory の参照パッケージを照会し、現在のバージョンがこのメソッドをサポートしていないことが判明したために発生します。

2. NoClassDefFoundError の後に、エラーを報告したクラスが続きます

A.jar と B.jar をインポートしたところ
、ロード時に A.jar に C1.jar、B.jar に C2.jar が含まれており、
C.jar のバージョンが競合していました。

この種の問題は、どのjarパッケージが呼び出されているかを確認することです.
ツールクラスを提供し
、それをクラスに直接入れて、呼び出されたjarが正しいかどうかを確認します.


import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.CodeSource;
import java.security.ProtectionDomain;
 
public class SystemUtils {
    
    
 
    /**
     * 获取一个class类的实际位置
     * @param cls
     * @return
     */
    public static URL getClassLocation(final Class<?> cls) {
    
    
 
        //非空判断
        if (cls == null) {
    
    
            throw new IllegalArgumentException("null input: cls");
        }
 
        URL result = null;
        final String clsAsResource = cls.getName().replace('.', '/').concat(".class");
 
        final ProtectionDomain pd = cls.getProtectionDomain();
 
        if (pd != null) {
    
    
            final CodeSource cs = pd.getCodeSource();
            if (cs != null) {
    
    
                result = cs.getLocation();
            }
 
            if (result != null) {
    
    
                if ("file".equals(result.getProtocol())) {
    
    
                    try {
    
    
                        if (result.toExternalForm().endsWith(".jar") || result.toExternalForm().endsWith(".zip")) {
    
    
                            result = new URL("jar:".concat(result.toExternalForm()).concat("!/").concat(clsAsResource));
                        } else if (new File(result.getFile()).isDirectory()) {
    
    
                            result = new URL(result, clsAsResource);
                        }
                    } catch (MalformedURLException ignore) {
    
    
 
                    }
                }
            }
        }
 
        if (result == null) {
    
    
            final ClassLoader clsLoader = cls.getClassLoader();
            result = clsLoader != null ? clsLoader.getResource(clsAsResource) : ClassLoader.getSystemResource(clsAsResource);
        }
 
        return result;
    }
 
}

ツール原文:https://www.bbsmax.com/A/RnJW1bEBdq/

5.weblogic 起動レポート: java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot**

Linux サーバーでは、root アカウント (通常のユーザー アカウントである必要があります) を使用して weblogic アプリケーションを起動します。

一般ユーザー(weblogicユーザー)が切り替えを開始すると、タイトルの例外が報告される

理由: root ユーザー起動後、root 権限に各種ファイル権限が付与されるため、後で一般ユーザーで起動した場合にファイル操作権限が不足する。

アプローチ:


find /home/weblogic/  -user root -exec ls {
    
    } \;  查询 /home/weblogic/(此目录是weblogic 的存放目录) 目录下是root 用户权限的文件

chown -R weblogic:weblogic domains   将domains目录下所有的文件,赋值weblogic 用户权限

上記の操作を繰り返し、ターゲット ディレクトリでルート権限ファイルを見つけて、再認証します。

6. Linux ではポートが占有され、アドレスは使用されます。

ポートを占有しているプロセス番号を確認して強制終了します (このポート番号があなただけのものである場合)

ps aux |  grep java | losf -i:7001  | grep LISTEN | awk '{print $2}'   查看java 进程,占用7001 端口的 pid  

netstat -an | grep LISTEN
0.0.0.0的就是每个IP都有的服务,写明哪个IP的就是绑定那个IP的服务。

netstat -tln
用来查看linux的端口使用情况

netstat -tunllp 查所有的端口

sudo netstat -anp|grep "端口号"   ----查使用端口的进程号

kill -9 进程号

おすすめ

転載: blog.csdn.net/sinat_34979884/article/details/121125348