Linux用iReport-4.6.0をダウンロードし、[ファイル]-> [新規...]メニューから新しいレポートを作成すると、新しいレポートはプレビューに表示されませんが、エラーメッセージcvc-complex-type.3.2.2 attribute 'uuid' is not allowed to appear in element 'jasperreport'
代わりに。
オプションで互換性4.5.0を選択した場合でも、同じエラーメッセージが表示されます。 iReport-4.6.0(Windows)の他のユーザーが作成したレポートファイルを開くときにも、同じエラーメッセージが表示されます。
レポートファイルのスキーマはhttp://jasperreports.sourceforge.net/xsd/jasperreport.xsd
ですが、このスキーマファイルにはuuid
は含まれていません。
何が問題でしょうか?
私は答えを見つけました:
メモ帳++でJRXMLファイルを開き、uuid="\w*-\w*-\w*-\w*-\w*"
の「検索と置換」を行い、空の文字列でREGULAR EXPRESSIONを選択すると、この間違ったタグのすべての出現が削除されました。
私のために働いた。
IReport Designerのオプションウィンドウで、互換モードを希望のバージョンに変更できます。 jasperreport 3.5.1との互換性を設定すると、レポートを再度保存すると、uuidがすべて削除されます。
よろしく
Notpad ++でレポートを開き、uuidとその番号を削除するだけです。適切にコンパイルしてレポートを生成した後...同じ問題が発生し、この方法で解決します。
Ireport 4.6以降を使用している場合、uuidの問題を解決する最善の方法は、同様のireport 4.6以降を使用することです。uuid属性はバージョン4.6から新たに導入されているためです。それ以外の場合、jrxmlファイルからuuidを手動で削除すると、uuidは次のコンパイル時に対応するタグに再び配置されます...
Linuxは使用していませんが、レポートはiReport Designer-xxを使用して作成します。同じバージョンのjasperreport(jasperreport-XX)jarをプロジェクトに追加します。
私はこれも問題に遭遇した私の同僚にこれを提案しました:
sed -i 's/ uuid="[^"]*"//g' $(find * -name \*.jrxml)
通常は使用しません sed(1)-i
しかし、彼女はGNU/Linuxを使用しているので、ここでは問題ではありませんでした。これを解決するより専門的なUnixの方法は次のとおりです。
find * -name \*.jrxml -print0 | while IFS= read -d '' -r file; do
ed -s "$file" <<-'EOF'
1,$g/ uuid="[^"]*"/s///g
w
q
EOF
done
(これら4つのスペースはタブです。それ以外の場合は機能せず、 mksh(1) またはNUL区切りの入力を読み取ることができる別のシェルが必要です。)
Perlを使用することもできます。
find * -name \*.jrxml -print0 | xargs -0 Perl -pi -e 's/ uuid="[^"]*"//g'
または、とにかく、あなたのニーズに応じて、あなたの xargs(1) などです;-)
私の場合、私はuuid="63f04b11-4b7e-4cf1-99b5-a5ec6db799d6"
完全に機能することをテストするためのサンプルレポートを生成しました
だからあなたはuuid=" "
簡単な解決策があります。
Jasper Studio 5.5を備えたJasper Server 4.5のレポートをサポートしています
この問題は、重複したクラスパスエントリ、具体的には古いバージョンのjasperreports-core-renderer.jarおよびjasperreports-extensions.jarのエントリ(オプション->クラスパス)が原因で、私の場合に発生しました。
これらの重複したエントリは、iReportのアップグレード中に設定をインポートした後に表示されました。どうやらこれは、古いバージョンがクラスパスから削除されないiReportのバグが原因です。
そのため、以前のバージョンから設定をインポートしないようにするか、古い.jarを手動で削除してください。