Nova FJ21 - erro 404 usando Struts2

29 respostas
C

Olá, boa tarde. Estou fazendo a nova FJ21 da Caelum e estou tendo erro 404 ao usar o primeiro exemplo com Struts2. É como se a configuração de meu web.xml não estivesse sendo reconhecida.

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<html>
<body>
<h2>Olá mundo com Struts2!</h2>
</body>
</html>
public class OlaMundoAction {
@Action(value = "olaMundoStruts", results = {
@Result(location = "/olaMundoStruts.jsp", name = "ok") }
)
public String execute() {
System.out.println("Executando a lógica com Struts2");
return "ok";
}
}

Alguém já teve este mesmo erro e poderia me ajudar?

Grato, Carlos.

29 Respostas

C

O Struts2 não precisa do struts config não?

dcorteztec

cmendes o struts 2 pode usar o xml ou annotations como vc usou geralmente esse erro é falta de jar da uma olhada no console do
tom cat ve se sua aplicação startou

vlw

C

Não, não aparece nada no console. Se eu tiro as linhas do filter do web.xml e mando rodar no servidor, o jsp funciona (apesar de não executar a servlet - só funciona o jsp). Se eu coloco as linhas do filter novamente nem o jsp funciona. Quando estou com as linhas do filter e restarto o tomcat, aparece o erro: fatal error starting up struts-spring integration. you might need to add the follow to web.xml:

<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
quando eu coloco estas linhas e restarto novamente, aparece outro erro : java.io.FileNotFoundException: Could not open ServletContext resource[/WEB-INF/applicationContext.xml]

dcorteztec

vc vai usar spring fiz aki na minha maquina o exemplo da fj-21 e rodou de primeira antes tava dando 404 porq esqueci de por um jar do xwork e freemarker.

C

Não vou usar spring não. Coloquei todos os jar que vem no download do struts2, num total de 71 arquivos.

dcorteztec

Essas daki já são necessárias para começar

http://www.4shared.com/file/242320036/d7dc407d/jars.html

T

cmendes vc conseguiu solucionar o seu problema? Estou passando pelo mesmo, até arrumei os .jar relacionado pelo dcorteztec, mas ainda assim não funcionou.

Obrigado pela atenção.

C

Infelizmente não consegui. Eu resolvi seguir o conselho de alguém que disse (numa mensagem privada) para deixar o Struts2 e passar a usar o JSF…

edu_merckx

você adicionou os jars ao build path?

vai na pasta lib e seleciona todos os jars, clica com o botão direito, seleciona a opção Build Path -> Add build path(acho que é isso)…

‘limpe’ o projeto em Project -> Clean e reinicie o Tomcat…

passei por esse problema e foi assim que consegui resolver…

até mais…

T

Consegui rodar o exemplo da Caelum.

Usei os seguintes Jars na pasta lib:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar

Adicionei os JARs no buildpath como disse o nosso amigo edu_merckx.

Também criei na pasta src um arquivo chamado struts.xml com o seguinte conteúdo:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
</struts>

Abraços.

brunorota

Voces adicionaram o .jar pelo eclipse ou foram lá na pasta e colaram os .jars?

T

Eu selecionei os .jar e dei ctrl + c, depois fui ao eclipse, cliquei com o botão direito na pasta lib e mandei colar (paste). Aí, ainda no eclipse selecionei os .jar da pasta lib, botão direito neles e build path> add to build path (algo assim).

[]s

brunorota

Tenta colar os .jar na pasta do projeto manualmente, sem ser pelo eclipse

Vai no workspace e cola na pasta WEB-INF/lib

brunorota

A sim o seu problema já esta resolvido hehehe

Foi mals, eu só falei pq eu estava com um problema com .jar no projeto pq eu tinha selecionado os .jar pelo eclipse

Ae alguem me falou que tinha que fazer pelo O.S

^^

BLV_DOOM_JAVA

Eu coloquei os .jar que indicaram acima e inclui estes imports na classe OlaMundoAction:

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

não sei se esta correto...por favor eu peço que me falem se ta certo o código ficou assim:

package br.com.caelum.tarefas.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

public class OlaMundoAction {
	
	@Action( value = "olaMundoStruts", results = {
			@Result( location = "/olaMundoStruts.jsp", name = "ok" ) }
	)
	public String execute() {
		System.out.println( "Executando a lógica com Struts2" );
		return "ok";
	}

}

Assim funcionou.

V

Não copnsigo fazer o struts 2 funcionar no netbeans, o erro que senpre da segue abaixo.

init:
deps-module-jar:
deps-ear-jar:
deps-jar:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
Executando implantação incremental para http://localhost:8084/exemplo
Distribuição incremental do http://localhost:8084/exemplo completada
Reimplantando http://localhost:8084/exemplo incrementalmente
Inicialização em andamento…
start?path=/exemplo
FAIL - Application at context path /exemplo could not be started
C:\Users\Vagner\Documents\NetBeansProjects\exemplo\nbproject\build-impl.xml:616: Deploy do módulo não foi realizado.
FALHA NA CONSTRUÇÃO (tempo total: 3 segundos)

Me ajudem.
Se alguem tiver um exemplo que funcione no netbeans.

Grato!

G

RESUMINDO A SOLUÇÃO DO ERRO QUE OCORRE NO EXERCICIO DA FJ 21

ERRO :Could not find action or result There is no Action mapped for namespace / and action name . - [unknown location]

1- TALVEZ É PQ AINDA NÃO FEZ O STRUTS.XML DENTRO SRC (CITADO ACIMA PELO AMIGO TomWH )

2- OU ENTÃO VC AINDA NÃO CONFIGUROU SE WEB. XML ASSIM :
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>fj21</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	  <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>	
</web-app>
[size=18]

3- E O MAIS IMPORTANTE DE TODOS É QUE VC NÃO DEVE TER IMPORTADO A BIBLIOTECA [color=red]struts2-convention-plugin-2.2.1.jar[/color]

E ADD BUILD PATH DO SEU PROJETO [/size]

FEITO ISSO É SÓ DAR CTRL+SHIFT + 'O' NA SUAL CLASSE OlaMundoAction.java

é isso resolveu todos os problemas aki...

F

Estou com o mesmo problema, e não se resolve, eu ja fiz o que voce falou aqui e não adianta, exibe a mesma msg!
[b]
HTTP Status 404 - There is no Action mapped for namespace / and action name olaMundoStruts.

type Status report

message There is no Action mapped for namespace / and action name olaMundoStruts.

description The requested resource (There is no Action mapped for namespace / and action name olaMundoStruts.) is not available.[/b]

Por favor me ajudem!

G

se vc já fez tudo que eu disse acima no outro tópico

segue este conselho do outro amigo aí

"vai na pasta lib e seleciona todos os jars, clica com o botão direito, seleciona a opção Build Path -> Add build path(acho que é isso)…

‘limpe’ o projeto em Project -> Clean e reinicie o Tomcat… "

pode ser o tomcat com algum erro de compilação

reinicie o eclipse ou outro programa, se necessário.

verifique o navegador (o chrome não é muito legal para testar aplicações não)

é isso .

G

olhe novamente seu web.xml

bom é isso.

F

Cara, continua a mesma coisa.

Acho que é alguma merda no tomcat.
Ve se está certo.

Eu baixei o tomcat, coloquei num diretorio tipo C:\apache-tomcat-6.0.32 na pasta conf eu criei a pasta:

Catalina / localhost

  • franktoys.xml (com o path do projeto) :
  • host-manage.xml
  • manager.xml

Não parada de aparecer a mesma msg:

TTP Status 404 - There is no Action mapped for namespace / and action name olaMundoStruts.

Dei um print do eclipse com o projeto.

http://www.thiagoleao.com.br/download/struts2.jpg

Caso queira olhar o projeto tem pra download, é pequeno.

http://www.thiagoleao.com.br/download/franktoys.zip

Agradeço muito!
Obrigado!

G

pela imagem , que não deu pra ver mto bem…

acho que sua biblioteca do mysql-connector-java5.1.7.jar não está add no build…(Add build path)

baixa as bibliotecas novamente, diretamente do site http://struts.apache.org/

já aconteceu comigo de ter biblioteca corrompida.

se o seu tomcat não estiver rodando nenhuma aplicação (baixe novamente pelo site http://tomcat.apache.org/)

F

Kra eu nao estou usando mysql pra q add? mesmo assim está add!
Não sei porque isso ia intereferir no resultado final.

gbmesso

Pessoal, eu só consegui fazer funcionar o projeto (usando o struts 2.2.3) quando adicionei os seguinte JARs (que não estavam na apostila)

commons-lang-2.5.jar
asm-3.1.jar

Penei para descobrir, fui lendo, consultando… mas agora funcionou!!!

F

Pessoal, boa noite!

O post é velho, mas o assunto não sai de moda, tanto que desde sábado estava penando para fazer funcionar/rodar os exercicios da apostila fj21, especificamente os dois primeiros do capítulo 11, que tratam da configuração do struts e do primeiro exemplo de inserção no banco. Para o primeiro, aloMundo, fazendo tudo que está escrito aqui, inclusive inserindo os 2 .jars citado pelo gbmeso, consegui fazer funcionar, isso depois de umas 3 horas procurando - tudo bem eu sei, coisa de novato…rsrs :oops: :oops:

Mas quando tudo parecia que ia fluir, me pego mais umas boas quantidades de horas tentando fazer funcionar o exercicio dois, que insere uma tarefa no bd. Só consegui fazer funcionar, depois de limpar todas as libs que existiam no projeto - diretorio WEB-INF/lib e adicionar as que precisava. Para chegar a versão final, importei o struts2-blank.war e fiz o teste de execução no tomcat. Como rodou direitinhoo exemplo, adicionei os jars jstl, mysql e o convetion.

Um detalhe muito importante: estou usando todos os programas, bibliotecas e plugins na sua última versão estável, que estão disponíveis nos respectivos sites. Eclipse, tomcat, jstl, driver para mysql, tudo, na sua última versão. Como servidor de banco de dados, não instalei o mysql sozinho, instalei o wamp - já que estou em ambiente windows - que trás além do mysql, php e apache. Sempre reforçando: tudo na sua útlima versão!

Segue abaixo um print da estrtura do meu projeto, bem como o código armazenado na action AdicionaTarefaAction. Existem alguns posts por aqui falando da necessidade de configurar o struts.xml, isso não é necessário, pois estamos usando o plugin convention justamente para ficarmos livres de mexer em arquivos xml num primeiro momento. Bom, agora que está funcionando, tenho que ver porque está dando pau na acentuação quando armazenado do banco de dados, mas aí, já é outra histoíra… :roll:

rodrigofarantes

Excelente FRabelovix. :smiley:

Sou iniciante em Java e me deparei com este problema também. Ao colocar os .jars que a apostila da caelum pedia, eu não conseguia startar o Tomcat usando o filtro do Struts 2.
Depois de ler a sua mensagem, coloquei apenas os jars que você colocou, e tudo funcionou corretamente. Vou seguir fazendo os exemplo e darei o feedback.

Obrigado a todos

D

Olá,

Fazendo o exercício “11.6 - Exercícios: Configurando o Struts 2 e testando a configuração” da página 113 da apostila “caelum-java-web-fj21” em 05/01/2012,
basta seguir os passos corretamente, ignorando o passo 1.d de importar o modelo de tarefas e o DAO, pois não precisa para fazer esse exercício funcionar.

A classe, o Action e o Result podem ficar exatamente assim:

@Action(value = olaMundoStruts, results = {

@Result(location = olaMundoStruts.jsp, name = ok) }

)

sem precisar da barra antes do arquivo .jsp e sem precisar dizer o caminho.

tb não foi preciso criar o arquivo struts.xml dentro do src

Depois de terminar, copie os .jars para dentro do WEB-INF/lib, na base do ctrl+c e ctrl+v mesmo
-commons-fileupload-1.2.1.jar
-commons-io-1.3.2.jar
-freemarker-2.3.15.jar
-ognl-2.7.3.jar
-struts2-convention-plugin-2.1.8.1.jar
-struts2-core-2.1.8.1.jar
-xwork-core-2.1.6.jar
sem precisar no Eclipse utilizar o “Add to Build Path”
pq automaticamente irá para Java Resources -> Libraries -> Web Apps Libraries (dê uma checada!)

Somente funcionou quando eu fui exatamente usar a versão struts-2.1.8.1
Pode baixar em http://archive.apache.org/dist/struts/library/
Acredito que outras versões tb devam funcionar.

Baixando, neste momento, a versão struts-2.3.1, as versões dos .jars são as seguintes:
-commons-fileupload-1.2.2.jar
-commons-io-2.0.1.jar
-freemarker-2.3.18.jar
-ognl-3.0.3.jar
-struts2-convention-plugin-2.3.1.jar
-struts2-core-2.3.1.jar
-xwork-core-2.3.1.jar
então, com esses .jars deram o erro 404.

Não sei pq do errro
Algum nova configuração para esses novos .jars, mas que com certeza pode ser resolvido fácil.

  • testei criando o struts.xml, mas continuou sem funcionar.
    Alguém sabe?

Abraço!

diogofabri

Opa… me deparei com a mesma situação que você brother, após quebrar muito a cabeça (Googlando, hehe) postei o topico no GUJ, segue o link:

Agora me deparei com outro problema:
[color=red]
WARNING: Could not find action or result
No result defined for action br.com.jm.actions.LoginAction
[/color]

Alguem já conseguiu resolver este problema na versão 2.3.1 do Struts2 ???

diogofabri

[Resolvido]

Criado 15 de março de 2010
Ultima resposta 26 de jan. de 2012
Respostas 29
Participantes 14