Добрый день, возникла очень не понятная ошибка… Дело в том, что у меня некоторые данные хранятся в файле, при развертывании 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 | ||
|
