Добрый день, возникла очень не понятная ошибка… Дело в том, что у меня некоторые данные хранятся в файле, при развертывании TomCat происходит удачное считывание с файлов. Но также у меня есть админка — там у пользователя есть возможно изменить данные в файле, после перезаписывании данных вылетает исключение(NullPointerException) видите ли такого файла не существует, хотя он находится там я проверял… Вообще не понятная ситуацию, вот методы для записи и чтение данных из файла:
Считывание
public synchronized String readFile(String filePath){
StringBuffer txt = new StringBuffer();
List<String> lines = null;
try {
lines = Files.readAllLines(Paths.get(filePath.toString()), StandardCharsets.UTF_8);
} catch (IOException e) {
log.error("Error reading from: " + filePath);
} catch (NullPointerException e){
log.error("Incorrect path : " + filePath);
}
for(String line: lines){
txt.append(line);
}
return txt.toString();
}
Запись
public synchronized void writeFile(String filePath, String data){
try {
FileWriter out = new FileWriter(filePath, false);
out.write(data);
out.close();
} catch (IOException e) {
log.error("Error writing to file: " + filePath);
}
}
Надеюсь, что кто-нибудь подскажет какая причина этого, потому что сам уже 2-ой день бьюсь с этим. Вот собственно ошибки, которые мне выдаются:
Type Exception Report
Message An exception occurred processing JSP page [/admin_room.jsp] at line [39]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception org.apache.jasper.JasperException: An exception occurred processing JSP page [/admin_room.jsp] at line [39]
36: <form action="/CommonData" name="change_common_titels"
method="POST" class="wrapper_admin row">
37: <div class="col-lg-5 col-md-5">
38: <label class="label_admin">Заголовок
названия системы тестирования:</label>
39: <input name="name_test" type="text"
class="input_admin" value="<%=FactoryModels.getCommonData(path +
"title_test.txt")%>">
40: </div>
41: <div class="col-lg-5 col-md-5">
42: <label class="label_admin">Заголовок
результата тестирования:</label>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:481)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
ru.tidstu.testingsystem.servlets.DispatcherServlet.forward(DispatcherServlet.java:22)
ru.tidstu.testingsystem.servlets.admin_room.CommonDataServlet.doPost(CommonDataServlet.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.NullPointerException
ru.tidstu.testingsystem.models.IOFile.readFile(IOFile.java:33)
ru.tidstu.testingsystem.models.FactoryModels.getCommonData(FactoryModels.java:107)
org.apache.jsp.admin_005froom_jsp._jspService(admin_005froom_jsp.java:152)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
ru.tidstu.testingsystem.servlets.DispatcherServlet.forward(DispatcherServlet.java:22)
ru.tidstu.testingsystem.servlets.admin_room.CommonDataServlet.doPost(CommonDataServlet.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Здравствуйте, пытаюсь прочесть файл x.txt но возникает такая ошибка. Подскажите пожалуйста как исправить?
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Programa {
public static void main(String[] args) throws FileNotFoundException {
String separator = File.separator;
String path = separator + "c" + separator + "Users" + separator + "X" + separator + "Desktop" + separator + "x.txt";
File file = new File(path);
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
scanner.close();
}
}
Exception in thread "main" java.io.FileNotFoundException: cUsersXDesktopx.txt (??????? ?? ??????? ????? ????????? ????)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.util.Scanner.<init>(Scanner.java:639)
at Programa.main(Programa.java:12)
I try to read JSON file with Java. The code is:
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("j.txt");
String jsonTxt = IOUtils.toString( is );
JSONObject json = (JSONObject) JSONSerializer.toJSON( jsonTxt );
JSONObject routes = json.getJSONObject("routes");
JSONObject legs = routes.getJSONObject("legs");
JSONObject distance = legs.getJSONObject("distance");
String dist = distance.getString("text");
}
And the line JSONObject json = (JSONObject) JSONSerializer.toJSON( jsonTxt );
makes an error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at antmedic.algorithm.SimpleParser.main(SimpleParser.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 13 more
Java Result: 1
I would be grateful for solving this problem.
asked Jan 16, 2011 at 16:35
0
Latest version of Commons Lang (currently 3.1) has package name of org.apache.commons.lang3
instead of org.apache.commons.lang
. For the later package name (as in your case), you should download 2.6 version of Commons Lang.
answered Jul 16, 2012 at 12:31
Xiao JiaXiao Jia
4,1692 gold badges29 silver badges47 bronze badges
2
Sounds like you don’t have apache commons jar file in you class path
answered Jan 16, 2011 at 16:39
Amir RaminfarAmir Raminfar
33.7k7 gold badges92 silver badges123 bronze badges
5
You are missing some jar dependency which contains org.apache.commons.lang.exception.NestableRuntimeExceptio class. Look on internet where to find this class and add this jar in your classpath (in this case Apache Common Lang)
answered Jan 16, 2011 at 16:41
You can update your maven pom.xml file with this. I had to specify 2.3 for the version to get it to download.
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
answered Oct 7, 2012 at 7:50
Добрый день, возникла очень не понятная ошибка… Дело в том, что у меня некоторые данные хранятся в файле, при развертывании TomCat происходит удачное считывание с файлов. Но также у меня есть админка — там у пользователя есть возможно изменить данные в файле, после перезаписывании данных вылетает исключение(NullPointerException) видите ли такого файла не существует, хотя он находится там я проверял… Вообще не понятная ситуацию, вот методы для записи и чтение данных из файла:
Считывание
public synchronized String readFile(String filePath){
StringBuffer txt = new StringBuffer();
List<String> lines = null;
try {
lines = Files.readAllLines(Paths.get(filePath.toString()), StandardCharsets.UTF_8);
} catch (IOException e) {
log.error("Error reading from: " + filePath);
} catch (NullPointerException e){
log.error("Incorrect path : " + filePath);
}
for(String line: lines){
txt.append(line);
}
return txt.toString();
}
Запись
public synchronized void writeFile(String filePath, String data){
try {
FileWriter out = new FileWriter(filePath, false);
out.write(data);
out.close();
} catch (IOException e) {
log.error("Error writing to file: " + filePath);
}
}
Надеюсь, что кто-нибудь подскажет какая причина этого, потому что сам уже 2-ой день бьюсь с этим. Вот собственно ошибки, которые мне выдаются:
Type Exception Report
Message An exception occurred processing JSP page [/admin_room.jsp] at line [39]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception org.apache.jasper.JasperException: An exception occurred processing JSP page [/admin_room.jsp] at line [39]
36: <form action="/CommonData" name="change_common_titels"
method="POST" class="wrapper_admin row">
37: <div class="col-lg-5 col-md-5">
38: <label class="label_admin">Заголовок
названия системы тестирования:</label>
39: <input name="name_test" type="text"
class="input_admin" value="<%=FactoryModels.getCommonData(path +
"title_test.txt")%>">
40: </div>
41: <div class="col-lg-5 col-md-5">
42: <label class="label_admin">Заголовок
результата тестирования:</label>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:481)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
ru.tidstu.testingsystem.servlets.DispatcherServlet.forward(DispatcherServlet.java:22)
ru.tidstu.testingsystem.servlets.admin_room.CommonDataServlet.doPost(CommonDataServlet.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.NullPointerException
ru.tidstu.testingsystem.models.IOFile.readFile(IOFile.java:33)
ru.tidstu.testingsystem.models.FactoryModels.getCommonData(FactoryModels.java:107)
org.apache.jsp.admin_005froom_jsp._jspService(admin_005froom_jsp.java:152)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
ru.tidstu.testingsystem.servlets.DispatcherServlet.forward(DispatcherServlet.java:22)
ru.tidstu.testingsystem.servlets.admin_room.CommonDataServlet.doPost(CommonDataServlet.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Sanan07, спасибо
Добавлено через 9 часов 26 минут
Есть еще одно «но»! Выдает он ошибку java.io.EOFException, потому что при открытии файла натыкается на «Маркер конца файла». И запись объекта идет после этого маркера. Т.Е. у меня постоянно при попытке чтения этого файла всегда будет
Добавлено через 5 минут
Установка маркера происходит после прохода строчки
Java | ||
|
До этого момента файл пуст
Добавлено через 15 минут
Если еще конкретнее, то запись этого маркера поисходит на шаге связывания файла со стримом
Добавлено через 3 минуты
Фигня какая-то. Выходит что маркер EOF не в конце, а постоянно в начале. Почему так?
Добавлено через 40 минут
Java | ||
|
а здесь объявление in = new ObjectInputStream(fi) вообще вызывает java.io.EOFException.
Добавлено через 3 минуты
Насколько я понял
Java | ||
|
— пишет в файл маркер EOF
и когда я снова отправляю объект в поток
Java | ||
|
то это дописывается в конец файла, после маркера. Т.е. при чтении
я всегда буду иметь EOF
Товарищи, что скажите? Как избежать этого? Что я не так делаю?
Добавлено через 1 час 45 минут
Java | ||
|
уже и параметр поставил для перезаписи(False) все равно пишет в начало файла EOF
Добавлено через 1 минуту
такое впечатление, что я один здесь
Добавлено через 54 минуты
Вот, элементарный пример набросал, так сказать, «скопируй и вставь» . Выводит все время «oops», а почему? Ну почему так, кто может объяснить?
Java | ||
|
Добавлено через 2 часа 29 минут
Вот решение, человек на другом форуме помог, если кому понадобиться.
Java | ||
|