Как исправить ошибку FileNotFound весной с помощью Derby

#java #spring

Вопрос:

Я не знаю, почему всегда, когда я запускаю приложение, консоль говорит мне, что есть некоторые ошибки. Я в этом деле нищий.

 java.io.FileNotFoundException
at java.util.zip.ZipFile.open(Native Method) ~[na:1.8.0_111]
at java.util.zip.ZipFile.<init>(ZipFile.java:219) ~[na:1.8.0_111]
at java.util.zip.ZipFile.<init>(ZipFile.java:149) ~[na:1.8.0_111]
at java.util.jar.JarFile.<init>(JarFile.java:166) ~[na:1.8.0_111]
at java.util.jar.JarFile.<init>(JarFile.java:130) ~[na:1.8.0_111]
at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:241) ~[tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:65) ~[tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49) ~[tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:383) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:318) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:270) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:233) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) [tomcat-embed-jasper-9.0.46.jar:9.0.46]
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104) [tomcat-embed-jasper-9.0.46.jar:9.0.46]
at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:83) [tomcat-embed-jasper-9.0.46.jar:9.0.46]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) [tomcat-embed-core-9.0.46.jar:9.0.46]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_111]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-embed-core-9.0.46.jar:9.0.46]
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_111]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:829) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) [tomcat-embed-core-9.0.46.jar:9.0.46]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) [tomcat-embed-core-9.0.46.jar:9.0.46]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_111]
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-embed-core-9.0.46.jar:9.0.46]
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_111]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) [tomcat-embed-core-9.0.46.jar:9.0.46]
 

Я управляю путями с помощью своего класса контроллера, в котором есть путь для/, /editar и всего остального, что вы можете увидеть в коде:

 package com.example.segundoparcial19_20.controller;

package com.example.segundoparcial19_20.controller;

import com.example.segundoparcial19_20.dao.CategoriaRepository;
import com.example.segundoparcial19_20.dao.PeliculaRepository;
import com.example.segundoparcial19_20.entity.Categoria;
import com.example.segundoparcial19_20.entity.Pelicula;
import com.example.segundoparcial19_20.entity.PeliculaDTO;
import com.example.segundoparcial19_20.vo.Filtro;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

@Controller
public class mainController {


private PeliculaRepository peliculaRepository;

private CategoriaRepository categoriaRepository;

public CategoriaRepository getCategoriaRepository(){return categoriaRepository;}

@Autowired
public void setCategoriaRepository(CategoriaRepository categoriaRepository){
    this.categoriaRepository=categoriaRepository;
}

public PeliculaRepository getPeliculaRepository(){
    return peliculaRepository;
}

@Autowired
public void setPeliculaRepository(PeliculaRepository peliculaRepository){
    this.peliculaRepository=peliculaRepository;
}

@GetMapping("/")
public String doGet(Model model){


    Filtro filtro = new Filtro();
    model.addAttribute("filtro", filtro);
    List<Categoria> listaCategorias = categoriaRepository.findAll();
    model.addAttribute("listaCategorias", listaCategorias);

    return doFiltrar(filtro, model);
}

@PostMapping("/filtrar")
public String doFiltrar(Filtro filtro, Model model){

    List<Pelicula> listaPeliculas = null;

    if(filtro.getListaCategorias().isEmpty()){

        listaPeliculas = peliculaRepository.findAll();
    }else{

        List<Pelicula> lista = new ArrayList<>();
        listaPeliculas = peliculaRepository.findByCategoria(filtro.getListaCategorias());
        listaPeliculas.addAll(lista);
    }

    model.addAttribute("categorias", categoriaRepository.findAll());
    model.addAttribute("listaPeliculas", listaPeliculas);

    return "listaPeliculas";

}

@GetMapping("/pelicula/{id}/editar")
public String editarPeli(Model model, @PathVariable("id") Short id){

    Optional<Pelicula> peliculaOpt = peliculaRepository.findById(id);

    if(peliculaOpt.isPresent()){
        Pelicula pelicula = peliculaOpt.get();
        PeliculaDTO pel = new PeliculaDTO(pelicula);
        model.addAttribute("pel", pel);
    }
    List<Categoria> listaCategorias = categoriaRepository.findAll();
    model.addAttribute("listaCategorias", listaCategorias);
    return "editar";
}

@PostMapping("/pelicula/editar")
public String editarInfo(Model model, @ModelAttribute("pel") @Validated PeliculaDTO pelicula){

    PeliculaDTO pel1 = pelicula;

    Optional<Pelicula> peliculaOpt = peliculaRepository.findById(pelicula.getPeliculaId());

    if(peliculaOpt.isPresent()){
        Pelicula peli = peliculaOpt.get();
        peli.setTitulo(pelicula.getTitulo());
        peli.setDescripcion(pelicula.getDescripcion());
        peli.setAnyoEstreno(pelicula.getAnyoEstreno());
        peli.setDuracion(pelicula.getDuracion());
        peli.setPresupuesto(pelicula.getPresupuesto());
        peli.setCategoriaList(pelicula.getCategoriaList());
        //peli.setIdiomaId(pelicula.getIdiomaId());
        model.addAttribute("pelicula", peli);
        peliculaRepository.save(peli);
    }




    List<Categoria> listaCategorias = categoriaRepository.findAll();
    model.addAttribute("listaCategorias", listaCategorias);

    return "redirect:/pelicula/"   pelicula.getPeliculaId()   "/editar";
}



@GetMapping("/pelicula/{id}/actores")
public String actores(Model model, @PathVariable("id") Short id){

    Optional<Pelicula> peliculaOpt = peliculaRepository.findById(id);

    if(peliculaOpt.isPresent()){
        Pelicula pelicula = peliculaOpt.get();
        model.addAttribute("pelicula", pelicula);
    }

    return "actores";
}

}
 

I filter by category with my FilterClass which isnt mine, i copied it from a friend and I think that it works because my friends doesnt have the problem:

 package com.example.segundoparcial19_20.vo;

import com.example.segundoparcial19_20.entity.Categoria;

import java.util.ArrayList;
import java.util.List;

public class Filtro {

private List<Categoria> listaCategorias;

public Filtro(){

    this.listaCategorias = new ArrayList<>();
}

public void setListaCategorias(List<Categoria> listaCategorias) {
    this.listaCategorias = listaCategorias;
}

public List<Categoria> getListaCategorias() {
    return listaCategorias;
}
}
 

My list jsp:

 <%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ page import="com.example.segundoparcial19_20.entity.Pelicula" %>
<%@ page import="java.util.List" %>
<%@ page import="com.example.segundoparcial19_20.entity.Categoria" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Lista de Peliculas</title>
</head>
<%
    List<Pelicula> peliculas = (List)request.getAttribute("listaPeliculas");
    List<Categoria> categorias = (List) request.getAttribute("categorias");
%>
<body>

<h1>Listado de Peliculas</h1>

<form:form method="post" action="/filtrar" modelAttribute="filtro">
    <form:checkboxes path="listaCategorias" items="${categorias}" itemLabel="nombre"/>
    <input type="submit" value="Filtrar">
</form:form>

<table border="1">
    <%
        for (Pelicula p: peliculas) {
    %>
    <tr>
        <td><%=p.getTitulo() %></td>
        <td><%= p.getAnyoEstreno()%></td>
        <td><%= p.getDuracion()%></td>
        <td><%= p.getValoracionId().getDescripcion() %></td>
        <td><%= p.getIdiomaId().getNombre() %></td>
        <td><%= p.getPresupuesto() %></td>
        <td><a href="/pelicula/<%= p.getPeliculaId()%>/actores">Actores</a></td>
        <td><a href="/pelicula/<%= p.getPeliculaId()%>/editar">Editar</a></td>
    </tr>
    <%
        }
    %>
</table>
</body>
</html>
 

My DTO class:

 package com.example.segundoparcial19_20.entity;

import java.util.List;

public class PeliculaDTO {

    private Short peliculaId;
    private String titulo;
    private String descripcion;
    private Integer anyoEstreno;
    private short duracion;
    private double presupuesto;
    private List<Categoria> categoriaList;
    //private Idioma idiomaId;
    /*
    *  título, descripción (textarea), año de estreno, duración,
    * presupuesto, categorías a las que pertenece e idioma.
    * */

    public PeliculaDTO() {

    }

    public PeliculaDTO(Short peliculaId, String titulo, String descripcion,
                       Integer anyoEstreno, short duracion,
                       double presupuesto, List<Categoria> categoriaList
                       //,Idioma idiomaId
                       ) {
        this.peliculaId = peliculaId;
        this.titulo = titulo;
        this.descripcion = descripcion;
        this.anyoEstreno = anyoEstreno;
        this.duracion = duracion;
        this.presupuesto = presupuesto;
        this.categoriaList = categoriaList;
        //this.idiomaId = idiomaId;
    }

    public PeliculaDTO (Pelicula pelicula){
        this.peliculaId=pelicula.getPeliculaId();
        this.titulo=pelicula.getTitulo();
        this.descripcion=pelicula.getDescripcion();
        this.anyoEstreno=pelicula.getAnyoEstreno();
        this.duracion=pelicula.getDuracion();
        this.presupuesto=pelicula.getPresupuesto();
        this.categoriaList= pelicula.getCategoriaList();
        //this.idiomaId= pelicula.getIdiomaId();
    }

    public Short getPeliculaId() {
        return peliculaId;
    }

    public void setPeliculaId(Short peliculaId) {
        this.peliculaId = peliculaId;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Integer getAnyoEstreno() {
        return anyoEstreno;
    }

    public void setAnyoEstreno(Integer anyoEstreno) {
        this.anyoEstreno = anyoEstreno;
    }

    public short getDuracion() {
        return duracion;
    }

    public void setDuracion(short duracion) {
        this.duracion = duracion;
    }

    public double getPresupuesto() {
        return presupuesto;
    }

    public void setPresupuesto(double presupuesto) {
        this.presupuesto = presupuesto;
    }

    public List<Categoria> getCategoriaList() {
        return categoriaList;
    }

    public void setCategoriaList(List<Categoria> categoriaList) {
        this.categoriaList = categoriaList;
    }

    /*public Idioma getIdiomaId() {
        return idiomaId;
    }

    public void setIdiomaId(Idioma idiomaId) {
        this.idiomaId = idiomaId;
    }*/
}
 

My Repository Class:

 package com.example.segundoparcial19_20.dao;

import com.example.segundoparcial19_20.entity.Categoria;
import com.example.segundoparcial19_20.entity.Pelicula;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface PeliculaRepository extends JpaRepository<Pelicula, Short> {

    @Query("SELECT DISTINCT p FROM Pelicula p JOIN p.categoriaList c WHERE c IN :categorias")
    public List<Pelicula> findByCategoria(@Param("categorias") List<Categoria> categorias);

}
 

My edit JSP page:

 <%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ page import="com.example.segundoparcial19_20.entity.Pelicula" %>
<%@ page import="com.example.segundoparcial19_20.entity.PeliculaDTO" %>
<%@ page import="java.util.List" %>
<%@ page import="com.example.segundoparcial19_20.entity.Categoria" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%
        PeliculaDTO pelicula = (PeliculaDTO) request.getAttribute("pel");
        List<Categoria> listaCategorias = (List) request.getAttribute("listaCategorias");
    
    %>
    <title><%=pelicula.getTitulo()%></title>
</head>
<body>
<h1><%=pelicula.getTitulo()%></h1>
    
    <form:form action="/pelicula/editar" method="post" modelAttribute="pel">

        <br>
        <form:label path="peliculaId">peliculaId</form:label>
        <form:input path="peliculaId" type="text" value='<%=pelicula.getPeliculaId()%>' readonly="true"/>


        <br>
        <form:label path="titulo">Titulo</form:label>
        <form:input path="titulo" type="text" value='<%=pelicula.getTitulo()%>'/>

        <br>
        <form:label path="descripcion">descripcion</form:label>
        <form:textarea path="descripcion" type="text" value='<%=pelicula.getDescripcion()%>'/>

        <br>
        <form:label path="anyoEstreno">anyoEstreno</form:label>
        <form:input path="anyoEstreno" type="text" value='<%=pelicula.getAnyoEstreno()%>'/>

        <br>
        <form:label path="duracion">duracion</form:label>
        <form:input path="duracion" type="text" value='<%=pelicula.getDuracion()%>'/>

         <br>
        <form:label path="presupuesto">presupuesto</form:label>
        <form:input path="presupuesto" type="text" value='<%=pelicula.getPresupuesto()%>'/>

        <br>
        <form:select path="categoriaList" class="form-control">
            <form:options items="${listaCategorias}" />
        </form:select>




        <input type="submit" value="Editar">
    </form:form>

</body>
</html>
 

The filter my prof does:

  package es.taw.sampletaw.vo;

    import es.taw.sampletaw.entity.MicroMarket;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Filtro {
        private String nombre;
        private List<MicroMarket> listaSupermercado;
    
        public Filtro() {
            this.nombre = "";
            this.listaSupermercado = new ArrayList<>();
        }
        public String getNombre() {
            return nombre;
        }
    
        public void setNombre(String nombre) {
            this.nombre = nombre;
        }
    
        public List<MicroMarket> getListaSupermercado() {
            return listaSupermercado;
        }
    
        public void setListaSupermercado(List<MicroMarket> listaSupermercado) {
            this.listaSupermercado = listaSupermercado;
        }
    }
 

The repository my profesor does:

 package es.taw.sampletaw.dao;

import es.taw.sampletaw.entity.Customer;
import es.taw.sampletaw.entity.MicroMarket;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface CustomerRepository extends JpaRepository<Customer, Integer> {

    @Query("SELECT c FROM Customer c WHERE c.name LIKE CONCAT('%',:nombre, '%') OR c.microMarketByZip IN :supermercado")
    public List<Customer> findBySimilarNameOrMicroMarket (@Param("nombre") String nombre,
                                                          @Param("supermercado") List<MicroMarket> supermercado);

    @Query("SELECT c FROM Customer c WHERE c.name LIKE CONCAT('%', :nombre, '%')")
    public List<Customer> findBySimilarName (@Param("nombre") String nombre);

    @Query("SELECT c FROM Customer c WHERE c.microMarketByZip IN :supermercado")
    public List<Customer> findByMicroMarket (@Param("supermercado") List<MicroMarket> filtroSuper);
}