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

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

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.

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ź?

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