Erro: Unable to compile class for JSP [resolvido]

Olá pessoal,
Estou recebendo o seguinte erro em uma aplicacao:

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

Generated servlet error:
Only a type can be imported. net.app.MateriaPrimaService resolves to a package

An error occurred at line: 15 in the jsp file: /AddMateriaPrima.jsp
Generated servlet error:
MateriaPrimaService cannot be resolved

An error occurred at line: 25 in the jsp file: /AddMateriaPrima.jsp
Generated servlet error:
net.app.MateriaPrima cannot be resolved or is not a type

An error occurred at line: 25 in the jsp file: /AddMateriaPrima.jsp
Generated servlet error:
net.app.MateriaPrima cannot be resolved or is not a type

Generated servlet error:
net.app.MateriaPrima cannot be resolved or is not a type


	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:397)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

Há algo errado quando ele diz: “Only a type can be imported. net.app.MateriaPrimaService resolves to a package”

MateriaPrimaService é uma classe dentro do pacote net.app

Alguem já recebeu o mesmo erro?

Como você importou sua classe “net.app.MateriaPrimaService” ? Qual o comando que você usou na página?

Provavelmente você deve ter usado algo como “net.app.MateriaPrimaService.". Aí realmente acho que vai dar esse erro. Use “net.app.MateriaPrimaService” ou então, mais preguiçosamente, "net.app.

Coloca o JSP aí.

Ptz, eu ia colocar o JSP mas esqueci :oops:

Aí vai:

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ page import="net.app.MateriaPrimaService" %>
<%@ page import="java.util.List" %>

<html:html locale="true">
<head>
   <title>Cadastra Materia Prima</title>
   <html:base/>
</head>
<body bgcolor="white">

   <html:errors/>
   <%
      List materiaPrimaList = MateriaPrimaService.getInstance().getMateriaPrimaList();
      request.setAttribute("materiaPrima", materiaPrimaList);
   %>

   <p>Lista de materias primas no banco de dados:</p>

   <table border=1>
   <!-- This code will iterate over the list of items, creating a table
	row for each item. -->
   <logic:iterate id="element" name="items" scope="request" type="net.app.MateriaPrima" >
   <tr>
      <td><bean:write name="element" property="codigo" /></td> 
      <td><bean:write name="element" property="nome" /></td> 
      <td><bean:write name="element" property="descricao" /></td>	
      <td><bean:write name="element" property="unidade" /></td>	
      <td><bean:write name="element" property="custo" /></td>	
      <td><bean:write name="element" property="estoqueMinimo" /></td>	
   </tr>
   </logic:iterate>
   </table>

   <p>Adicionar um item:</p>		
   
   <!-- This form will post the submitted data 
   to the addItem Action Mapping -->

   <html:form action="addMateriaPrima.do" method="post">
      <table border=1>
         <tr><td>codigo:</td><td><html:text property="codigo" /></tr>
         <tr><td>nome:</td><td><html:text property="nome" /></tr>
         <td>descrição:</td><td><html:text property="descricao" /></td></tr>
         <tr><td>unidade:</td><td><html:text property="unidade" /></tr>
         <tr><td>custo:</td><td><html:text property="custo" /></tr>
         <tr><td>estoque minimo:</td><td><html:text property="estoqueMinimo" /></tr>
      </table><br/>
      <html:submit/>
   </html:form>
</body>

</html:html>

Testei mudando pra “net.app.*” mas deu a mesma coisa

Faça assim:

 &lt;%@ page import="net.app.*,java.util.*" %&gt;

Obrigada, Mauricio. Mudou o erro, mas acredito que o erro novo ainda é relacionado:

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 14 in the jsp file: /AddMateriaPrima.jsp
Generated servlet error:
MateriaPrimaService cannot be resolved

An error occurred at line: 24 in the jsp file: /AddMateriaPrima.jsp
Generated servlet error:
net.app.MateriaPrima cannot be resolved or is not a type

An error occurred at line: 24 in the jsp file: /AddMateriaPrima.jsp
Generated servlet error:
net.app.MateriaPrima cannot be resolved or is not a type

Generated servlet error:
net.app.MateriaPrima cannot be resolved or is not a type


	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:397)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

Essas classes estão dentro de “/WEB-INF/classes/net/app”?

O caminho completo é:

C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.5\webapps\CadastroMP\WEB-INF\classes\net\app

Lá é onde estão todos os meus arquivos .class
(acabei de conferir e MateriaPrimaService.class está lá)

Pelo que eu vi, você tá usando o Struts, faça o seguinte, crie um action e no execute desse action você coloca o resultado da chamada desse método aí (MateriaPrimaService.getInstance().getMateriaPrimaList() ) do mesmo jeito que ele tá no JSP:


       List materiaPrimaList = MateriaPrimaService.getInstance().getMateriaPrimaList();
       request.setAttribute("materiaPrima", materiaPrimaList);

Aí você dá um forward pra esse JSP, que vai ficar mais ou menos assim:

 <%@ taglib uri="/tags/struts-html" prefix="html" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 <html:html locale="true">
 <head>
    <title>Cadastra Materia Prima</title>
    <html:base/>
 </head>
 <body bgcolor="white">
 
    <html:errors/>
 
    <p>Lista de materias primas no banco de dados:</p>
 
    <table border=1>
    <!-- This code will iterate over the list of items, creating a table
 	row for each item. -->

<c:forEach items="${materiaPrima}" var="materia">
        <tr>
                <td>${materia.codigo} </td>
                <td>${materia.nome} </td>
                <td>${materia.descricao} </td>
                <td>${materia.unidade} </td>
                <td>${materia.custo} </td>
                <td>${materia.estoqueMinimo} </td>
        </tr>
</c:forEach>

 
    <p>Adicionar um item:</p>		
    
    <!-- This form will post the submitted data 
    to the addItem Action Mapping -->
 
    <html:form action="addMateriaPrima.do" method="post">
       <table border=1>
          <tr><td>codigo:</td><td><html:text property="codigo" /></tr>
          <tr><td>nome:</td><td><html:text property="nome" /></tr>
          <td>descrição:</td><td><html:text property="descricao" /></td></tr>
          <tr><td>unidade:</td><td><html:text property="unidade" /></tr>
          <tr><td>custo:</td><td><html:text property="custo" /></tr>
          <tr><td>estoque minimo:</td><td><html:text property="estoqueMinimo" /></tr>
       </table><br/>
       <html:submit/>
    </html:form>
 </body>
 
 </html:html>

Vê aí no que é que dá.

Ptz, que forma estranha de se resolver um problema heheeh

Obrigada Mauricio