Entries for the ‘Java’ Category
在 Eclipse 中的 log4j.xml 出現系統找不到 log4j.dtd 警告
在專案中的每個 log4j.xml 中的此行 DOCTYPE log4j:configuration SYSTEM “log4j.dtd” 位置出現警告
警告內容如下:
1 | The file cannot be validated as the XML Schema "C:\EclipseWorkspace\SomeProject\src\log4j.dtd (系統找不到指定的檔案。)" that is specified as describing the syntax of the file cannot be located. |
試過將 log4j.dtd 複製到同一目錄下,但 Eclipse 還是顯示同樣問題。
將該行改成
1 2 3 | <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/resources/org/apache/log4j/xml/log4j.dtd?view=co"> |
就可以了。
不過這算是惡搞的處理方法,沒有網路就掛了,有機會還是要搞清楚是否有更適當的解決方案。
Eclipse 出現 The content of element type “package” must match … 錯誤
當我在 Eclipse IDE 環境中學習 struts 2 的過程中,進行編輯 struts.xml 時碰到提示下列的問題
The content of element type “package” must match “(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)”.
有問題的 struts.xml 內容大略如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" namespace="/" extends="jasperreports-default"> <action name="myJasperTest" class="tw.idv.bestlong.test.action.JasperAction"> <result name="success" type="jasper"> <param name="location">/jasper/our_compiled_template.jasper</param> <param name="datasource">myList</param> <param name="format">PDF</param> </result> </action> <result-types> <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/> </result-types> </package> </struts> |
這是因為沒有依據 DTD 中定義的 Element 順序,所以只要調整內容的順序如下就可以通過檢查了。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <package name="default" namespace="/" extends="jasperreports-default"> <result-types> <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/> </result-types> <action name="myJasperTest" class="tw.idv.bestlong.test.action.JasperAction"> <result name="success" type="jasper"> <param name="location">/jasper/our_compiled_template.jasper</param> <param name="datasource">myList</param> <param name="format">PDF</param> </result> </action> </package> |
讓 Eclipse 支援多種 JDK 版本的設定方式
不同的 Java 專案可能會因為歷史悠久而需要用到不同版本的 JDK 來編譯。
在 Eclipse 的環境下,進入 Window > Preferences > Java > Installed JREs
然後點選 Add 選擇 Standard VM 指定 JRE home 到 JDK 安裝的位置,讓 Eclipse 知道其他 JDK 的存在。
使用 jTDS 連接 MSSQL
在 iReport 中連接 MS SQL Server 資料庫可以使用 jTDS
而 jTDS-1.2.2 的預設屬性是支援 8.0 也就是一般稱為 2000 的 SQL Server
一般會設定 JDBC URL 如下
jdbc:jtds:sqlserver://ServerAddress/DBName;instance=
當需要連接 7.0 或是 6.5 等先前版本的 SQL Server 時就會出現下列錯誤訊息
1 2 3 4 5 6 7 | Message: java.sql.SQLException: I/O Error: Stream 0 attempting to read when no request has been sent Level: SEVERE Stack Trace: net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2307) ...之後省略 |
這時只要在 JDBC URL 中增加屬性調整 TDS
連接 SQL 7.0
jdbc:jtds:sqlserver://ServerAddress/DBName;instance=;TDS=5.0
連接 SQL 6.5
jdbc:jtds:sqlserver://ServerAddress/DBName;instance=;TDS=4.2
但基本上只有連線到 SQL 6.5 才需要指定,若是連接到 SQL 7.0 時 jTDS 會自動偵測調整。
詳細資料可以參考 jTDS 官方FAQ文件 http://jtds.sourceforge.net/faq.html