2013-04-03 5 views
0

Je viens d'ouvrir un « projet » J'ai fait quand je faisais mes études Java il y a quelques années, et bien qu'il fonctionne très bien, je reçois ces erreurs et je ne sais pas ce qu'ils veulent dire:Erreur compilation

warning: [options] bootstrap class path not set in conjunction with -source 1.5 Note: D:***\src\java\reportes\ServletRLineaMunieca.java uses or overrides a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

Note: D:***\src\java\reportes\ServletRLineaMunieca.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

1 warning


Ce projet Web comprend de nombreux fichiers, mais je ne coller celui qui donne l'erreur:

package reportes; 

import com.sql.ConectaDb; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.util.HashMap; 
import javax.servlet.ServletException; 
import javax.servlet.ServletOutputStream; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletRequestWrapper; 
import javax.servlet.http.HttpServletResponse; 
import net.sf.jasperreports.engine.JasperCompileManager; 
import net.sf.jasperreports.engine.JasperReport; 
import net.sf.jasperreports.engine.JasperRunManager; 
import net.sf.jasperreports.engine.design.JasperDesign; 
import net.sf.jasperreports.engine.xml.JRXmlLoader; 

public class ServletRLineaMunieca extends HttpServlet { 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

    try { 
     HttpServletRequestWrapper srw = 
       new HttpServletRequestWrapper(request); 
     String fpath = srw.getRealPath("") + 
       "/reporte/RLineaMunieca.jrxml"; 

     JasperDesign jasperDesign = 
       JRXmlLoader.load(fpath); 
     JasperReport jasperReport = 
       JasperCompileManager.compileReport(
       jasperDesign); 

     HashMap jasperParameter = new HashMap(); 
     jasperParameter.put("logo", "http://localhost:8084/tarea/images/logo.jpg"); 

     Connection cn = new ConectaDb().getConnection(); 
     byte[] bytes = 
       JasperRunManager.runReportToPdf(
       jasperReport, jasperParameter, cn); 
     cn.close(); 

     response.setContentType("application/pdf"); 
     response.setContentLength(bytes.length); 
     ServletOutputStream out = 
       response.getOutputStream(); 
     out.write(bytes, 0, bytes.length); 
     out.flush(); 
     out.close(); 

    } catch (Exception e) { 
     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     out.println("<html>"); 
     out.println("<head><title>Reportes</title></head>"); 
     out.println("<body>"); 
     out.println("<pre>"); 
     e.printStackTrace(out); 
     out.println("</pre>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } 



} 

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
/** 
* Handles the HTTP <code>GET</code> method. 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Handles the HTTP <code>POST</code> method. 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Returns a short description of the servlet. 
* @return a String containing servlet description 
*/ 
@Override 
public String getServletInfo() { 
    return "Short description"; 
}// </editor-fold> 

}

Depuis que je suis Il y a longtemps, j'ai oublié beaucoup de choses sur Java. S'il vous plaît gardez avec moi, c'est aussi ma première fois de poster ici, si mon code est collé mal s'il vous plaît montrez-moi comment le faire correctement.

i oublié d'ajouter que cette partie:

String fpath = srw.getRealPath("") + 

le getRealPath est strikeout (? Est-ce que vous dites)

+2

Si vous recompiler avec le '-Xlint: drapeau unchecked', le compilateur fournira plus de détails sur les commandes dépréciés/packages utilisés. En regardant rapidement, vous devriez spécifier les génériques lors de l'utilisation de HashMap. –

+0

Je risquerais que cela ait été écrit contre Java 1.4 (avant les génériques) d'où le manque d'entre eux. –

+0

comment puis-je faire ça ?? aussi cette partie je pense qu'il a été fait par l'enseignant, j'ai seulement édité le chemin :( – Loot

Répondre

0

Depuis Java 5 si vous utilisez des collections sans spécificateurs de type (par exemple , HashMap() au lieu de HashMap()). Cela signifie que le compilateur ne peut pas vérifier que vous utilisez la collection de manière sécurisée, en utilisant des génériques.

Pour vous débarrasser de l'avertissement, soyez précis sur le type d'objets que vous stockez dans la collection. Ainsi, au lieu de

HashMap jasperParameter = new HashMap(); 

utilisation

HashMap<String, String> jasperParameter = HashMap<String, String>(); 
+0

je reçois une erreur maintenant qui me donne beaucoup d'options créer champ hashmap dans reportes.servletRLineaMunieca créer paramètre hashmap créer hashmap variable locale , puis les mêmes options mais au lieu de hashmap il dit Chaîne – Loot

+0

Pouvez-vous coller l'erreur exacte que vous faites face. – Jayamohan

+0

maintenant im obtenir ceci: avertissement: [décoché] appel non coché pour mettre (K, V) en tant que membre du type brut HashMap jasperParameter.put (srw, fpath); où K, V sont des variables de type: K extends Objet déclaré dans la classe HashMap V extends Objet déclaré dans la classe HashMap 2 avertissements – Loot

0

Quand les gens sympathiques à Oracle retraite une classe ou une méthode, soit parce est a un problème ou ils se sont ennuyés de le mettre à jour, ils le marquer comme @deprecated . L'une des méthodes que vous utilisez est marquée comme ceci.

javac -Xlint:unchecked myFile.java vous indiquera quelle méthode vous avez utilisée, à quel point vous pouvez rechercher le javadoc sur cette méthode et découvrir pourquoi il a été retiré et si vous vous en êtes soucié.

Vous pourriez ne pas. Par exemple, si une méthode de temporisation a été retirée parce qu'elle a mal géré l'heure d'été, votre application pourrait ne pas l'utiliser de telle manière que cette faille soit importante.

Dans ce cas, vous n'avez pas ajouté la vérification de type pour votre HashMap Vérifiez le lien ci-dessous pour savoir comment fonctionnent les génériques. Cela vaut la peine d'apprendre même si cela ne changera pas le comportement de ce programme.

http://docs.oracle.com/javase/tutorial/java/generics/

+0

"Nice people at Oracle"? Tu dois être nouveau. ['@ Deprecated' était dans la spécification de la langue depuis 1.5] (http://docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html) (ce qui en fait quelque chose que les gentils développeurs de Sun fait;)) – Makoto

+0

@Makato Pas exactement .... J'étais un employé de SunSoft dans l'équipe du compilateur quand nous avons développé Java v0.9 et finalement v.1.0. Je pensais juste que l'appeler "Sunnicle" serait trop une blague. –

1

je l'ai déjà résolu mon problème je l'ai changé comme ceci:

String fpath = srw.getRealPath("") + 

à

String fpath = srw.getSession().getServletContext().getRealPath("") + 

également

HashMap jasperParameter = new HashMap(); 

à

HashMap<String, String> jasperParameter; 
jasperParameter = new HashMap<>(); 

remercie tous :)