Aplikacja nie wykazuje błędów - ale i nie działa. Nie mam pomysłu

Odpowiedz Nowy wątek
2019-02-10 14:55
0

Cześć,
W eclipse wszystko wygląda dobrze do momentu kompilacji:
Pojawia się cała "litania"

  13:51:09,069 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."FileUpload1.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."FileUpload1.war".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment "FileUpload1.war"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:151)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1738)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1700)
    at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1558)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: org/ajax4jsf/exception/FileUploadException
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.getConstructor(Class.java:1825)
    at org.jboss.as.jsf.deployment.JSFComponentProcessor.deploy(JSFComponentProcessor.java:106)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:144)
    ... 8 more
Caused by: java.lang.ClassNotFoundException: org.ajax4jsf.exception.FileUploadException from [Module "deployment.FileUpload1.war" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    ... 14 more

"FileUpload1.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"FileUpload1.war\".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"FileUpload1.war\"
    Caused by: java.lang.NoClassDefFoundError: org/ajax4jsf/exception/FileUploadException
    Caused by: java.lang.ClassNotFoundException: org.ajax4jsf.exception.FileUploadException from [Module \"deployment.FileUpload1.war\" from Service Module Loader]"}}
13:51:10,348 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 43) WFL

Nie wiem w czym jest problem i gdzie to poprawić.
Projekt składa się z 3 plików:
index.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<center>
<h1>Upload File Form</h1>
 <form action="FileUploadHandler" enctype="multipart/form-data" method="post">
 Enter File Name <input type="text" name="file_name"><br>
 Select<input type="file" name="file2" /><br>
 <input type="submit" value="upload" />
 </form> 
 <%
 String file_name=(String)request.getParameter("filename");
 if(file_name!=null){
 out.println(file_name+" File uploaded successfuly");
 }
 %>
</center>
</body>
</html>

web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
 <display-name>JSP_File_Upload</display-name>
 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <servlet>
 <servlet-name>FileUploadHandler</servlet-name>
 <servlet-class>com.chilyfacts.com.FileUploadHandler</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>FileUploadHandler</servlet-name>
 <url-pattern>/FileUploadHandler/*</url-pattern>
 </servlet-mapping>
 </web-app>

i servlet fileupload...

   package com.chilyfacts.com;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadHandler extends HttpServlet {
 private static final long serialVersionUID = 1 ;
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
 doPost(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
 String file_name = null;
 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 boolean isMultipartContent = ServletFileUpload.isMultipartContent(request);
 if (!isMultipartContent) {
 return;
 }
 FileItemFactory factory = new DiskFileItemFactory();
 ServletFileUpload upload = new ServletFileUpload(factory);
 try {
 List < FileItem > fields = upload.parseRequest(request);
 Iterator < FileItem > it = fields.iterator();
 if (!it.hasNext()) {
 return;
 }
 while (it.hasNext()) {
 FileItem fileItem = it.next();
 boolean isFormField = fileItem.isFormField();
 if (isFormField) {
 if (file_name == null) {
 if (fileItem.getFieldName().equals("file_name")) {
 file_name = fileItem.getString();
 }
 }
 } else {
 if (fileItem.getSize() > 0) {
 fileItem.write(new File("D:\\uploaded_files\\" + fileItem.getName()));
 }
 }
 }
 } catch (Exception e) {
 e.printStackTrace();
 } finally {
 out.println("<script type='text/javascript'>");
 out.println("window.location.href='index.jsp?filename="+file_name+"'");
 out.println("</script>");
 out.close();
 }
 }
}

Nie mam bladego pojęcia w czym może być problem

Pozostało 580 znaków

2019-02-10 18:29
4
  1. To wygląda na moment deploymentu a nie kompilacji
  2. Serio, zakładanie 10 wątku z tym samym kodem wcale nie sprawi że nagle ktoś ci postanowi pomóc.
  3. Ludzie którzy pisali kod w tejże Javie 1.4 i skryptletach JSP już nie żyją lub są na emeryturze.
  4. Masz jasno napisane:
Caused by: java.lang.ClassNotFoundException: org.ajax4jsf.exception.FileUploadException

Czyli takiej klasy nie ma w twoim WAR/JAR ani na serwerze. Nie powinno to dziwić, ajax4jsf prowadzi nas do archiwalnych artykułów z roku 2008 (czyli 11 letnich!), a ty próbujesz odpalić na to na nowym WildFly.

Próbujesz włożyć dyskietę 3.5" do USB i pytasz nas czemu nie działa.
Jeszcze raz apeluje: oddaj tą książkę z której się uczysz do muzeum. Ale jeśli kategorycznie nie chcesz tego zrobić to spróbuj wziąć stary komputer od babci... Albo zacznij od dodania do poma zależności które mają te twoje archaiczne klasy.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
edytowany 2x, ostatnio: Shalom, 2019-02-10 18:32
Pokaż pozostałe 2 komentarze
nie bądź taki surowy, też interesuję się historią - tylko bardziej z okresu 5000 BC - 1945 AC ;) - superdurszlak 2019-02-10 19:57
Odradzam raczej początkującym naukę JSP, ale to nie jest tak, że jest zupełnie bezużyteczna technologia. W pewnych warunkach to całkiem niezła alternatywa dla PHP. Ale to są bardzo rzadko spotykane warunki (kto w normalnych projektach używałby PHP, albo czegoś podobnego?). - jarekr000000 2019-02-10 20:52
Nowy WildFly - to trochę jak nowy arkebuz. Nowsze wersje coś tam wnoszą, stal lepsza, precyzyjniejsze wykonanie, ale to nadal stara koncepcja. - jarekr000000 2019-02-10 20:57
@jarekr000000: chodzi mi o nową wersje, która pewnie już 17 razy zmieniła nazwę pakietu dla jakichś archaicznych klas ;] - Shalom 2019-02-10 21:58
Na studiach dalej to wciskają ;) Pamiętam listę zadań gdzie prowadzący podkreślił nawet wszystkie wersje zależności jakich trzeba użyć - sprzed 4 lat (na tamten czas). - orchowskia 2019-02-11 09:30

Pozostało 580 znaków

2019-02-17 13:55
0

OK przetestowałem chyba wszystkie instrukcje w necie jak załadować plik na dysk. Okazało się, że biblioteki były w złym miejscu, choć Eclipse twierdził inaczej.
Tak więc udało mi się umieścić plik w żądanej lokalizacji. Problemem jest jednak to, że ścieżka jest bezwzględna tzn. private final String UPLOAD_DIRECTORY = "C:\Users\Ja\Desktop\folder";
Natomiast chciałbym zrobić odwołanie względne - tzn do miejsca na serwerze.
Projekt wygląda tak:
screenshot-20190217134917.png
Jeżeli w klasie FileCreate napiszę:
String fileName = "plik/testFile.txt"; to plik pojawia się w katalogu "plik",
Jednak jak mam napisać ten katalog by umieścić w nim ładowane przez użytkownika pliki.
Kiedy napiszę
private final String UPLOAD_DIRECTORY ="plik//";
to wyskakuje mi, że "nie może znaleźć odpowiedniej ścieżki.
Jakaś podpowiedź?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0