1. Hibernate名前空間の廃止警告 (HHH90000012)
アプリケーション起動時に「Recognized obsolete hibernate namespace」という警告が表示される場合、Hibernateのマッピングファイル(.hbm.xml)で古いDTD定義が使用されています。これを修正するには、XMLヘッダーの宣言を現在の標準的な名前空間に更新する必要があります。
<!-- 修正前 (非推奨) -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 修正後 (推奨) -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
2. Spring FrameworkにおけるTaskSchedulerのBean未定義エラー
No qualifying bean of type 'org.springframework.scheduling.TaskScheduler' available というエラーが発生する場合、スケジューリング機能に必要なBeanが登録されていません。XML設定を使用している場合は、明示的にスケジューラを定義することで解決できます。
<!-- タスクスケジューラの定義 -->
<task:scheduler id="myTaskScheduler" pool-size="10"/>
<task:annotation-driven scheduler="myTaskScheduler"/>
3. JSPにおけるJSTLタグライブラリの例外
ClassNotFoundException: javax.servlet.jsp.jstl.core.Config や JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved が発生する場合、プロジェクトのクラスパスにJSTL実装ライブラリが不足しています。
JSTLタグを使用するには、以下の依存ライブラリ(jstl.jar および standard.jar、またはMavenの依存座標)を追加する必要があります。JSPファイルでの宣言例は以下の通りです。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
4. Spring MVCフォームタグのバインディング例外
IllegalStateException: Neither BindingResult nor plain target object for bean name 'user' available as request attribute は、フォームタグで指定されたモデル属性がコントローラーから渡されていない場合に発生します。
例えば、JSPで <form:form modelAttribute="accountForm"> と定義している場合、コントローラ側で同名のオブジェクトをModelに追加する必要があります。
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String showRegistrationForm(Model model) {
// フォーム用のオブジェクトを生成し、モデルに追加
AccountForm accountForm = new AccountForm();
accountForm.setLoginId("guest");
model.addAttribute("accountForm", accountForm);
return "register";
}
5. MyBatisのMapperバインディング例外
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) は、MyBatisのMapperインターフェースとXML設定の不一致を示しています。主な確認ポイントは以下の通りです。
- Mapper XMLの
namespace属性が、インターフェースの完全修飾クラス名と正確に一致しているか。 - XML内の
id属性が、インターフェースのメソッド名と一致しているか。 - XMLファイルがクラスパス上の正しい場所に配置され、ビルドパスに含まれているか。
6. EclipseのJPA検証によるパフォーマンス低下
Eclipseで「JPA Project Change Event Handler」が頻繁に動作し、動作が重くなる場合、Dali JPAプラグインが原因となっている可能性があります。これを解決するには、Eclipseのインストール詳細から「Dali Java Persistence Tools - JPA Support」をアンインストールします。
7. JacksonによるJSON逆シリアライズ時のプロパティ例外
UnrecognizedPropertyException: Unrecognized field は、JSONオブジェクトにJavaBean(DTO)に存在しないプロパティが含まれている場合にスローされます。未知のプロパティを無視して処理を続行するには、クラスレベルでアノテーションを追加します。
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDataDto {
// フィールド定義
}
8. Apache CXFにおけるSOAPFaultException
Cannot create a secure XMLInputFactory というエラーは、XML処理に必要なStAX実装が不足している場合に発生します。これを解決するには、クラスパスに stax2-api および woodstox-core-asl(またはwoodstox-core)のライブラリを追加してください。
9. Hibernate起動時の遅延改善
Hibernateの起動が極端に遅い場合、マッピングファイルのDTD定義がネットワーク上の古いURLを参照し、タイムアウト待ちが発生している可能性があります。前述の「1」と同様に、DTDのURLを正しい公式のもの(http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd)に更新することで、ローカルでの検証が行われ、起動速度が向上します。
10. Mavenビルドのエンコーディング警告
Using platform encoding (GBK actually) to copy filtered resources という警告は、Mavenビルドがプラットフォーム標準のエンコーディングに依存していることを示しています。ポータビリティを確保するため、pom.xmlで明示的にエンコーディングをUTF-8に指定してください。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>