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 进程号