Problema de roo da primavera com Urlrewrite em STs (Eclipse)
-
27-09-2019 - |
Pergunta
Estou tendo problemas para descobrir como resolver esse problema. Eu tenho um arquivo chamado: "urlrewrite.xml", que foi gerado automaticamente pelo Spring Roo após a execução do comando "Controller" no Roo Shell.
No entanto, ainda recebo o seguinte erro:
"Referenced file contains errors (http://tuckey.org/res/dtds/urlrewrite3.0.dtd). For more information, right click on the message in the Problems View and select "Show Details..."
Aqui está o conteúdo do arquivo urlrewrite.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
<urlrewrite default-match-type="wildcard">
<rule>
<from>/resources/**</from>
<to last="true">/resources/$1</to>
</rule>
<rule>
<from>/static/WEB-INF/**</from>
<set type="status">403</set>
<to last="true">/static/WEB-INF/$1</to>
</rule>
<rule>
<from>/static/**</from>
<to last="true">/$1</to>
</rule>
<rule>
<from>/</from>
<to last="true">/app/index</to>
</rule>
<rule>
<from>/app/**</from>
<to last="true">/app/$1</to>
</rule>
<rule>
<from>/**</from>
<to>/app/$1</to>
</rule>
<outbound-rule>
<from>/app/**</from>
<to>/$1</to>
</outbound-rule>
</urlrewrite>
Alguma idéia de como se livrar desse erro?
Solução
Basta mudar 3,0 para 3.2
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
Outras dicas
Eu também tive esse problema. O que fiz foi apenas mudar o código de:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
em :
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//www.tuckey.org//DTD UrlRewrite 3.2//EN"
"http://www.tuckey.org/res/dtds/urlrewrite3.2.dtd">
Basicamente, eu apenas anexei o "www". antes do "tuckey.org" e corrigiu o problema.
http://forum.springsource.org/showthread.php?t=90962 me levou ao caminho certo.
Se você baixar o DTD de http://tuckey.org/res/dtds/urlrewrite3.0.dtd Você descobrirá que às vezes está correto e às vezes está vazio HTML. Eclipse cache o que é download de qualquer maneira. Você pode resolver o problema de duas maneiras:
- Faça o download do arquivo DTD, verifique se ele se parece com um XML DTD, armazene -o localmente e aponte para isso no seu cabeçalho URLREWRITE.XML.
- Vá para Preferências -> Geral -> Conexões de rede -> cache e remova o DTD em cache e revalide o XML (clique com o botão direito do mouse -> Validar). Repita até obter uma boa cópia do cache do DTD.
Adicionar www Para vincular trabalhos para mim, mudei de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
"http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
para
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite3.0.dtd">
Olá, acabei de resolver isso com base em algumas dessas respostas aqui:
Os passos que segui foram:
1. Download do urlrewrite3.2.dtd
2. Economizou localmente para ... guerra/web-inf/urlrewrite3.2.dtd
3. apontou meu arquivo urlrewrite para a cópia local
4. Removido a versão em cache (Preferências> Geral> Conexões de Rede> Cache)
5. Revalidou o XML
NOTA: Eu tentei inicialmente editar o arquivo, como foi sugerido por Titi Wangsa bin Damhore, mas lá recebi um erro de validação no arquivo DTD. Eu removi isso seguiu as etapas acima e o boom. Problema resolvido. Obrigado àqueles que contribuíram com idéias.
Bloco de citação
Fiz alguns resultados do 4º ou 5º resultado no Google "Sample DTD" foram http://www.xmlfiles.com/dtd/dtd_examples.asp
A amostra teve um
<!DOCTYPE TVSCHEDULE [
<!ELEMENT TVSCHEDULE (CHANNEL+)>
..
..
]>
O URL reescrever DTD começou com
<!ELEMENT urlrewrite ((rule|class-rule)*, outbound-rule*, catch*)>
Eu emiti um wget para ""http://tuckey.org/res/dtds/urlrewrite3.0.dtd"" e abriu em STs, sim, é vermelho.
Adicionado no topo
<!DOCTYPE urlrewrite [
e ad o fundo
]>
e não é mais vermelho.
Então eu sugiro,
- Obtenha o DTD
- alterá -lo
- salve -o no mesmo diretório que o XML
- Altere o XML para usar o DTD no mesmo diretório.
Na idéia Intellij, você pode selecionar o Red DTD URI, atingir o alt-entr e escolher "buscar recurso externo".
No Eclipse, você pode adicionar a entrada ao catálogo XML em: Preferências -> XML -> Catálogo XML.
Eu espero que isso ajude.
Mudando 3,0 para 3.2 funcionou para mim ...
Defina o URL DTD para "http://urlrewritefilter.googlecode.com/svn-history/r275/trunk/src/java/org/tuckey/web/filters/urlrewrite/dtds/urlrewrite3.0.dtd", funciona.
Eu peguei o DTD ... salvei no mesmo diretório que o XML e o alterei. Agora há um vermelho no DTD e XML
As declarações de marcação contidas ou apontadas pela declaração do tipo de documento devem ser bem formadas. urlrewrite3.0.dtd
O arquivo referenciado contém erros (.... app/src/main/webapp/web-inf/urlrewrite3.0.dtd). ..
Faça o upload do seu arquivo XML e o arquivo DTD.
Usei o método User374708 e limpa a rede Cahce, como mostrado no post de perto de perto
É melhor fazer o download do DTD e apontá -lo com uma entrada de catálogo XML, pois isso torna desnecessário alterar o DTD ao publicar, mas seus arquivos serão validados localmente durante o desenvolvimento.
Eu descobri o problema. Experimente este URL http://tuckey.org/res/dtds/urlrewrite3.1.dtd Com sua navegação e você verá que está redirecionando você para uma página HTML completamente diferente em vez do arquivo DTD. Então aqui está o que eu fiz. Encontrei o arquivo dtd do Tuckey Jar e copiei o conteúdo para {Workspace}/. Metadata/.plugins/org.eclipse.wst.internet.cache/279269156.cache e excluí os avisos da visualização dos marcadores e revalidados. Rememer 279269156. O nome do arquivo de cache do Cache variará. Então você precisa encontrar qual é o arquivo ruim abrindo o arquivo de cache com algum editor
Esse problema foi corrigido para a próxima versão ... https://jira.springsource.org/browse/roo-1129