powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Что означает ошибка java.lang.NullPointerException?
36 сообщений из 36, показаны все 2 страниц
Что означает ошибка java.lang.NullPointerException?
    #40133904
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть самописная библиотека. Она работает в старом приложении. В новом вызываю, выдает ошибку:

Код: java
1.
2.
3.
4.
5.
6.
at com.odi.emaileport.SendEmail.SendHTMLEmail(SendEmail.java:135)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
java.lang.NullPointerException: java.lang.NullPointerException


как понять, что ей не хватает?
Я пишу на jython 2.7 . подключаю и вызываю так:
Код: python
1.
2.
3.
import com.odi.emaileport.SendEmail as sendM

sendM.SendHTMLEmail(...)



до этого были другие ошибки, то файл не положила в нужном месте, то переменную не того типа передаю. Эти ошибки исправила и в итоге последняя (я так думаю). Что с ней делать?
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40133915
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поняла, что ошибка в строке 135 исходного кода. Но исходного кода у меня нет, сотрудник, который писал библиотеку давно уволился, исходников не оставил. Я class файл декодировала в помощью JAD. Но понять, какая строка соответствую 135 строке трудно. Подозреваю, что этот декодированный файл я должна включить в проект на java, переписать вызов функции на java и смотреть, что произойдёт.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40133932
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел,
Нет исходников - переписать.
Взлом форуме не обсуждают
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40133952
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp, да, вы правы, чем разбираться в чужом коде, проще самому написать. Казалось, один шаг остался, а оказалось - пропасть.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40133998
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Диана Орел,
Нет исходников - переписать.
Взлом форуме не обсуждают


https://www.sql.ru/forum/rules.aspx - да, "Запрещается: ... *публикация серийных ключей, лицензий, способов взлома ПО и других методов, которые можно квалифицировать как преследуемые по закону". Надо иметь в виду, что:
Третья часть статьи 1280 Гражданского Кодекса предусматривает, что декомпиляция компьютерных программ может осуществляться свободно, то есть без получения согласия правообладателей программного обеспечения, но для этого требуется соблюдение некоторых условий.
Условия свободной декомпиляции

Законодатель устанавливает следующие условия свободного использования компьютерных программ, посредством декомпиляции:

Лицо, желающее осуществить декомпиляцию, должно владеть соответствующей компьютерной программой правомерно, то есть приобрести ее законным путем;
Целью декомпиляции является достижение взаимодействия программного обеспечения, созданного лицом, правомерно владеющим компьютерной программой, с этой компьютерной программой;
Информация, которая должна быть получена в результате декомпиляции, не должна быть доступной из открытых или иных источников;
Действия, направленные на декомпиляцию должны производиться только в отношении тех частей компьютерной программы, которые необходимы для достижения взаимодействия данной компьютерной программы с другим программным обеспечением;
Информация, полученная в результате декомпиляции, не может быть переданной для использования третьими лицами, за исключением случаев, когда это является необходимым условием взаимодействия декомпилируемой компьютерной программы с другим программным обеспечением;
Декомпиляция не должна носить неоправданный характер, например декомпиляция, совершенная с целью создания нового программного обеспечения будет считаться незаконной;
Декомпиляция не должна наносить ущерб компьютерной программе и нарушать исключительные права ее правообладателей.


Но "свою" (здесь - того же самого предприятия) программу декомпировать, очевидно, можно безусловно.

Тема декомпиляции Java довольно любопытна. К сожалению, то, что мне попадалось в руки (в далёкие времена), работало некорректно.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134004
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
Понятно что есть тонкости.
Но декомпиляция это прикрытие головотяпства а не разработка.
Можно конечно, но в свободное время и под кроватью.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134008
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел
поняла, что ошибка в строке 135 исходного кода. Но исходного кода у меня нет, сотрудник, который писал библиотеку давно уволился, исходников не оставил. Я class файл декодировала в помощью JAD. Но понять, какая строка соответствую 135 строке трудно. Подозреваю, что этот декодированный файл я должна включить в проект на java, переписать вызов функции на java и смотреть, что произойдёт.

Насколько я помню, IDEA в отладчика умеет декомпилировать код и явно должно показывать точку возникновения ошибки

Запустите программу под отладчиком и посмотрите, где возникает exception. Запустить отладчик можно и удаленно, отладчик на одном компьютере, отлаживаемый код на другом (вплоть до прода, хотя это уже экстрим). Как запускать отладчик и какие ключи нужны для удаленной отладки - то уже в смотреть в документации (инетах)
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134010
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Но декомпиляция это прикрытие головотяпства а не разработка.

Не все так очевидно ( C ) дочь офицера

Например внедряли Oracle CC&B, без декомпиляции было бы вообще полная засада. Т.к. в большинстве технических вопросов код значительно более понятная вещь, что отсутвующая документации. Часть кода поставлялось (например Cobol), но код на ядро системы нет, а понять детали тонкостей вызова и детали передачи параметров - было необходимо.

Не так давно пришлось править баги в старой приблуде, исходники которого от головотяпста потеряли. Ну ладно, декомпильнул.

В чем проблема в декомпиляции, если с ее помощью можно решить проблему - мне не очень понятно. Понятно, что лучше быть богатым и здоровым пользоваться оригинальными исходниками, но если их нет, то декомпилятор хоть как-то помогает.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134013
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Согласен. Зависит от причины.
Я работал в фирме, где купили разработку ПО, а наличие исходников просто забыли добавить в ТЗ.
Пришлось выкинуть 3 года работы и писать по новой проект.
Имхо
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134020
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Victor Metelitsa,
Понятно что есть тонкости.
Но декомпиляция это прикрытие головотяпства а не разработка.
Можно конечно, но в свободное время и под кроватью.


Мы живём далеко не в идеальном мире. А что случилось, то случилось.
И странно советовать писать программу для своей конторы (то есть, выполнять служебные обязанности) за счёт своего свободного времени, да ещё и под кроватью.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134023
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел
поняла, что ошибка в строке 135 исходного кода. Но исходного кода у меня нет, сотрудник, который писал библиотеку давно уволился, исходников не оставил. Я class файл декодировала в помощью JAD. Но понять, какая строка соответствую 135 строке трудно. Подозреваю, что этот декодированный файл я должна включить в проект на java, переписать вызов функции на java и смотреть, что произойдёт.

Насколько точно декомпиляторы типа Jad восстанавливают исходники? Пробелы, переносы строк - все сохраняется? Не делается ли какая оптимизация при компиляции, из-за которой нельзя восстановить оригинальный *.java?

Попробовал на простом классе - все вроде ок, если не считать добавленную служебную информацию в начало файла.

Если восстанавливается все до символа - то найти нужную строку вроде не сложно ...
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134036
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется не до символа. Как минимум теряется информация о именах локальных переменных.

Кроме того, насколько я помню, часто у JAD не получается востановить блоки обработки исключений try...catch, получается просто не компилируемый код (но можно дорабатать руками).

Вот отладчик IDEA, скорее всего, правильно покажет с правильной нумерацией строк. Для этого он и отладчик. (не декомпилирует, с точностью до строки, а просто правильно покажет правильную нумерацию)

IMHO
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134045
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
Я же сделал акцент на программист-РАЗРАБОТЧИК.
Есть еще системщик, прикладник,...
Если вы разработчик то декомпиляция не ваши служебные обязанности.
Можно и тонер в принтерах менять).
Кому что нравится.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134050
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Если вы разработчик то декомпиляция не ваши служебные обязанности.

А чьи?
Вводить дополнительные должности: архитектор-шредерист, программист-бакспейсе, обратный девопс?

Девопс - копирует файлики с дева на прод, обратно копировать он не умеет "не его служебные обязанности"
Обратный девопс - специальная професия для копирования файлов с прода ))), иногда в процессе работы такое требуется
программист-бекспейсер - и так все понятно. Программист пишет код, программист-бекспейсер делает прямо обратное - нажимает кнопку Del или Backspace. Нужная профессия. Обычному программусту нужно запретить нажимать эту кнопку! На то должен быть отдельный человек. Один пишет - другой удаляет.
и так далее и тому подобная

Специализация залог эффективной работы!
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134065
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
А чьи?

Ну ведь при устройстве на работы ты спрашиваешь чем будешь заниматься.
Легаси, стартап, скриптовый фреймворк вместо ЯП,,....
Если это разовая декомпиляция это одно.
Если постоянная работа с легаси без исходников "за еду" это другое
))))
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134071
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Специализация залог эффективной работы!
сомневался?
Капитализм победил коммунизм.
Голливуд победил Мосфильм своей специализацей.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134073
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте труды Адама Смита (18 век) как завещал А.С.Пушкин.

Специализация определяется объемом рынка сбыта и производства. Если рынок сбыта маленький, то что консультант по внедрение ERP системы на фирме по выращиванию цветков кактусов, что на ферме по разведению ежей - одно и то же. И те и те с колючками, т.ч. в поверпоинте бизнес процессы не сильно менять придется )))

работа с легаси без исходников "за еду"
ну вот и определились, что единственная разница в том, что: после доширака, не забудьте потребовать будерброд с намазанным маслом!
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134113
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел

Код: python
1.
2.
3.
import com.odi.emaileport.SendEmail as sendM

sendM.SendHTMLEmail(...)


до этого были другие ошибки, то файл не положила в нужном месте, то переменную не того типа передаю. Эти ошибки исправила и в итоге последняя (я так думаю). Что с ней делать?

Если "самописная" библиотека работала в старом приложении то значит она - рабочая.

Дай более полный твой исходник.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134168
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
Диана Орел
поняла, что ошибка в строке 135 исходного кода. Но исходного кода у меня нет, сотрудник, который писал библиотеку давно уволился, исходников не оставил. Я class файл декодировала в помощью JAD. Но понять, какая строка соответствую 135 строке трудно. Подозреваю, что этот декодированный файл я должна включить в проект на java, переписать вызов функции на java и смотреть, что произойдёт.

Насколько я помню, IDEA в отладчика умеет декомпилировать код и явно должно показывать точку возникновения ошибки

Запустите программу под отладчиком и посмотрите, где возникает exception. Запустить отладчик можно и удаленно, отладчик на одном компьютере, отлаживаемый код на другом (вплоть до прода, хотя это уже экстрим). Как запускать отладчик и какие ключи нужны для удаленной отладки - то уже в смотреть в документации (инетах)

Запускала в Eclipse, не показывает исходники, пишет, что нет исходных файлов
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134169
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел,
Он про Eclipse ничего не говорил
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134182
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDEA Communite Edition (бесплатный) - точно показывать/декомпилировать умеет. Пользовался лет 5-ть назад. Про современные версии не знаю, но не думаю, что эту возможность стали бы отключать

Можно конечно руками декомпильнуть JAD'ом, скомпилировать обратно, подложить в .JAR файл - но это мне кажется более сложным путем.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134193
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Диана Орел

Код: python
1.
2.
3.
import com.odi.emaileport.SendEmail as sendM

sendM.SendHTMLEmail(...)


до этого были другие ошибки, то файл не положила в нужном месте, то переменную не того типа передаю. Эти ошибки исправила и в итоге последняя (я так думаю). Что с ней делать?

Если "самописная" библиотека работала в старом приложении то значит она - рабочая.

Дай более полный твой исходник.
тоже так думаю. Наверное, я не правильно параметры передаю.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
public class SendEmail
{

    public SendEmail()
    {
    }

    public static byte[] convertEncoding(byte bytes[], String from, String to)
        throws UnsupportedEncodingException
    {
        return (new String(bytes, from)).getBytes(to);
    }

    public static String getCurrentDir()
    {
        File f;
        try
        {
            f = new File(com/odi/emaileport/SendEmail.getProtectionDomain().getCodeSource().getLocation().getPath());
            if(!f.isDirectory())
                return f.getParent().replace("%20", " ");
        }
        catch(Exception e)
        {
            return System.getProperty("user.dir");
        }
        return f.getPath().replace("%20", " ");
    }
/*--> эту функцию вызываю*/
    public static void SendHTMLEmail(String HostName, int SMTPPort, String UserName, String Password, String From, String TO, String CC, byte subject[], 
            byte message[], String CharacterSet, String fileAttachDir, final String filter, String deleteSource, String printTable, int sessNo)
        throws Exception
    {
        String Subject = new String(subject);
        String Message = new String(message);
        email = new HtmlEmailEx[sessNo + 1];
        email[sessNo] = new HtmlEmailEx();
        email[sessNo].setHostName(HostName);
        email[sessNo].setSmtpPort(SMTPPort);
        if(UserName.length() > 0 && Password.length() > 0)
            email[sessNo].setAuthentificaton(UserName, getPassFromStore(getCurrentDir()));
        email[sessNo].setFrom(From);
        email[sessNo].setSubject(Subject);
        list = InternetAddress.parse(TO.toString());
        email[sessNo].setTo(Arrays.asList(list));
        email[sessNo].setCharset(CharacterSet);
        if(CC.length() > 0)
        {
            list = InternetAddress.parse(CC.toString());
            email[sessNo].setCc(Arrays.asList(list));
        }
        File fileList[] = (File[])null;
        if(fileAttachDir.length() > 0)
        {
            ArrayList arrReport = new ArrayList();
            arrReport.add(new String[] {
                "Операция", "Файл", "Количество строк"
            });
            File attachDirectory = new File(fileAttachDir);
            if(!attachDirectory.isDirectory())
                throw new Exception((new StringBuilder("Directory is not exists ")).append(attachDirectory.getPath()).toString());
            fileList = attachDirectory.listFiles(new FilenameFilter() {

                public boolean accept(File dir, String name)
                {
                    if((new File((new StringBuilder(String.valueOf(dir.getPath()))).append("\\").append(name).toString())).isDirectory())
                        return false;
                    else
                        return name.toLowerCase().startsWith(filter.toLowerCase());
                }

                private final String val$filter;

            
            {
                filter = s;
                super();
            }
            }
);
            File afile1[];
            int l = (afile1 = fileList).length;
            for(int k = 0; k < l; k++)
            {
                File file = afile1[k];
                FileInfo fInf = getFileValidRows(file);
                arrReport.add(new String[] {
                    fInf.operation, file.getName(), String.valueOf(fInf.rows)
                });
                email[sessNo].attach(getEmailAttachment(file));
            }

            if(printTable.equals("1"))
                Message = HTMLstyle.styleHTMLMy(arrReport, Message).toString();
        }
        email[sessNo].setHtmlMsg(Message);
        try
        {
            email[sessNo].send();
        }
        catch(EmailException ex)
        {
            System.out.println((new StringBuilder("ERROR:")).append(ex.getMessage()).toString());
            throw new Exception(ex.getMessage());
        }
        if(deleteSource.equals("1") && fileList != null)
        {
            File afile[];
            int j = (afile = fileList).length;
            for(int i = 0; i < j; i++)
            {
                File file = afile[i];
                file.delete();
            }

        }
    }
/*--> 135 строка*/
    private static byte[] getPassFromStore(String storePath)
        throws Exception
    {
        File file;
        String ret;
        FileReader fr;
        BufferedReader br;
        file = new File((new StringBuilder(String.valueOf(storePath))).append("/store.txt").toString());
        ret = "";
        fr = null;
        br = null;
        if(!file.exists())
            throw new Exception((new StringBuilder("Can't find file ")).append(storePath).toString());
        try
        {
            fr = new FileReader(file);
            br = new BufferedReader(fr);
            ret = br.readLine();
        }
        catch(Exception ex)
        {
            throw new Exception(ex.getMessage());
        }
        break MISSING_BLOCK_LABEL_135;
        Exception exception;
        exception;
        if(br != null)
            br.close();
        if(fr != null)
            fr.close();
        throw exception;
        if(br != null)
            br.close();
        if(fr != null)
            fr.close();
        return Base64.decodeBase64(ret.getBytes());
    }

    private static FileInfo getFileValidRows(File file)
        throws IOException
    {
        StringBuilder curLine;
        InputStreamReader is;
        curLine = new StringBuilder();
        is = new InputStreamReader(new FileInputStream(file.getPath()), "Windows-1251");
        int cnt;
        char c[] = new char[1024];
        int count = 0;
        int readChars = 0;
        boolean empty = true;
        while((readChars = is.read(c)) != -1) 
        {
            empty = false;
            for(int i = 0; i < readChars; i++)
            {
                curLine.append(c[i]);
                if(c[i] == '\n')
                {
                    count++;
                    curLine.setLength(0);
                }
            }

        }
        cnt = count != 0 || empty ? count : 1;
        break MISSING_BLOCK_LABEL_138;
        Exception exception;
        exception;
        is.close();
        throw exception;
        is.close();
        FileInfo fInf = new FileInfo();
        if(cnt <= 1)
            cnt = 0;
        else
            cnt--;
        fInf.rows = cnt;
        fInf.operation = curLine.toString();
        return fInf;
    }

    private static EmailAttachment getEmailAttachment(File file)
    {
        EmailAttachment attachment = new EmailAttachment();
        attachment.setPath(file.getPath());
        attachment.setDisposition("attachment");
        return attachment;
    }

    private static HtmlEmailEx email[];
    private static InternetAddress list[];
}




Программа посылает сообщение на почту, можно прикреплять файлы, название которых начинается с определенного префикса, а так же, должен быть указан путь, по которому эти файлы лежат. Можно послать сообщение без файлов.
переписала на java, так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
import com.odi.emaileport.*;

public class TestMail {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		String smtpserver = "mail.company.ru";
		int		smtpport = 25 ;
		String	username =  "user_name";
		String		password =  "password"; 
/* да он тут и не нужен, потому что пароль лежит в зашифрованном виде в папке на сервере, программа, вроде, успешно к нему обращается (до этого ругался на отсутствие файла), но я не уверенна.*/

		String		frommail = "user1@сompany.ru";
		String		to = "orel_da@сompany.ru";
		String 		cc = null;

		String               characterset = "cp1251";
		String		subj = "Test2";
		String		msg = "Sent from FDMEE";
		String		filter1 = "xcvedfwer34r2"; // в cтарой программе такой фильтр стоял, если не надо прикреплять файлы
		String                reportdir = "";
		String		 deletesource = "0"; // такое значение взяла исходя из исходников библиотеки
		String		 printtables = "0";
  

		/* эту часть кода убрала, так как не поняла смысловой нагрузки, и не переписала с Jython

                hostname = socket.gethostname()
		IP = socket.gethostbyname(hostname)*/ 

		System.out.println(SendEmail.getCurrentDir()); /* вызываю, чтоб понять, куда положить файл с паролем. Файл с паролем взяла сторый, не меняла */
		SendEmail.SendHTMLEmail(smtpserver, 25, username, password, frommail, to, cc, subj.getBytes(), 
				msg.getBytes(), characterset, filter1,reportdir , deletesource , printtables , 111);
	}

}
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134213
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скопировал ваш код в Eclipse, 135 строка здесь:
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134222
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что
Код: java
1.
 fr = null

, что невозможно. Скорее всего при декомиляции немного поехали строки, но не думаю что сильно. Т.е. проблему нужно искать в строках рядом от 135-ой.
Из подозрительного - переменная
Код: java
1.
storePath

.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134233
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет, я тут не прав, ошибка же в методе SendHTMLEmail
Код: java
1.
at com.odi.emaileport.SendEmail.SendHTMLEmail(SendEmail.java:135)
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134238
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это наверное результат очень неудачной декомпилляции. Кажется там будет всегда Exception.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  
        fr = null;
        br = null;
        if(!file.exists())
            throw new Exception((new StringBuilder("Can't find file ")).append(storePath).toString());
        try
        {
            fr = new FileReader(file);
            br = new BufferedReader(fr);
            ret = br.readLine();
        }
        catch(Exception ex)
        {
            throw new Exception(ex.getMessage());
        }



Этот код надо полностью переосмыслить. В таком виде конешно использовать нельзя.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134244
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы передаете в метод SendEmail параметр CC
Код: java
1.
SendEmail.SendHTMLEmail(smtpserver, 25, username, password, frommail, to, cc, subj.getBytes(), msg.getBytes(), characterset, filter1,reportdir , deletesource , printtables , 111);


Перед этим определяете его как
Код: java
1.
String 		cc = null;



И вот тут у вас валиться нулпоинтер
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    public static void SendHTMLEmail(String HostName, int SMTPPort, String UserName, String Password, String From, String TO, String CC, byte subject[], 
            byte message[], String CharacterSet, String fileAttachDir, final String filter, String deleteSource, String printTable, int sessNo)
        throws Exception
    {
        String Subject = new String(subject);
        String Message = new String(message);
        email = new HtmlEmailEx[sessNo + 1];
        email[sessNo] = new HtmlEmailEx();
        email[sessNo].setHostName(HostName);
        email[sessNo].setSmtpPort(SMTPPort);
        if(UserName.length() > 0 && Password.length() > 0)
            email[sessNo].setAuthentificaton(UserName, getPassFromStore(getCurrentDir()));
        email[sessNo].setFrom(From);
        email[sessNo].setSubject(Subject);
        list = InternetAddress.parse(TO.toString());
        email[sessNo].setTo(Arrays.asList(list));
        email[sessNo].setCharset(CharacterSet);
---> if(CC.length() > 0)
        {
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134250
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreen
Вы передаете в метод SendEmail параметр CC

премного благодарна!!! помогло
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134251
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Это наверное результат очень неудачной декомпилляции. Кажется там будет всегда Exception.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  
        fr = null;
        br = null;
        if(!file.exists())
            throw new Exception((new StringBuilder("Can't find file ")).append(storePath).toString());
        try
        {
            fr = new FileReader(file);
            br = new BufferedReader(fr);
            ret = br.readLine();
        }
        catch(Exception ex)
        {
            throw new Exception(ex.getMessage());
        }



Этот код надо полностью переосмыслить. В таком виде конешно использовать нельзя.


Думаю, что исходный файл практически никогда не удастся восстановить. Взял простой пример:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
package newPackage;

public class Test {
	public static void main(String[] args) {
		String s1;
		s1 = "";
		String s2 = "*";

		for (int i = 0; i < 10; i++) {
			s1 = s1 + s2;
		}
		System.out.println(s1);
	}
}


А потом декомпилировал его:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   Test.java

package newPackage;

import java.io.PrintStream;

public class Test
{

    public Test()
    {
    }

    public static void main(String args[])
    {
        String s1 = "";
        String s2 = "*";
        for(int i = 0; i < 10; i++)
            s1 = (new StringBuilder(String.valueOf(s1))).append(s2).toString();

        System.out.println(s1);
    }
}



Тут кстати видно, что компилятор конкатенацию строк переделывает в StringBuilder. Так что можно свободно использовать "+" для строк в цикле и не парится? или нет ?)
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134253
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen, а какой-был декомпиллятор?

P.S. Внезапное появление StringBuilder - это кстати частый вопрос на собеседованиях.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134255
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще интересно, вот это:
Код: java
1.
File fileList[] = (File[])null;


и это:
Код: java
1.
2.
3.
4.
5.
6.
7.
File afile[];
int j = (afile = fileList).length;
for(int i = 0; i < j; i++)
{
   File file = afile[i];
   file.delete();
}


Это проделки компилятора/декомпилятора или я чего то не понимаю?

По первому случаю, есть ли разница как писать:
так
Код: java
1.
File fileList[] = (File[])null;


или так
Код: java
1.
File fileList[] = null;



А во втором, какой смысл заводить новую переменную "afile" для массива? Это же просто две ссылки на один и тот же объект.
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134256
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
faustgreen, а какой-был декомпиллятор?

P.S. Внезапное появление StringBuilder - это кстати частый вопрос на собеседованиях.

JAD (Вначале файла указано - // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.)
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134258
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
mayton
faustgreen, а какой-был декомпиллятор?

P.S. Внезапное появление StringBuilder - это кстати частый вопрос на собеседованиях.

JAD (Вначале файла указано - // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.)

А попробуй этот https://github.com/java-decompiler/jd-gui

JAD как-то странно тело цикла развернул. В голове не укладывается...
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134261
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
faustgreen
пропущено...

JAD (Вначале файла указано - // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.)

А попробуй этот https://github.com/java-decompiler/jd-gui

JAD как-то странно тело цикла развернул. В голове не укладывается...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Test {
  public static void main(String[] args) {
    String s1 = "";
    String s2 = "*";
    for (int i = 0; i < 10; i++)
      s1 = String.valueOf(s1) + s2; 
    System.out.println(s1);
  }
}


А тут билдера нет ( ... Вообщем мутно это все пока ...
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134268
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в байткоде. Если есть такая инструкция

Код: java
1.
new = 187 (0xbb)



Значит было явное создание объекта. Вот отсюда брал https://docs.oracle.com/javase/specs/jvms/se17/jvms17.pdf

У этих декомпилляторов свой чортов AI...
...
Рейтинг: 0 / 0
Что означает ошибка java.lang.NullPointerException?
    #40134270
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, похоже билдер все же создается:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Compiled from "Test.java"
public class newPackage.Test {
  public newPackage.Test();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: ldc           #16                 // String
       2: astore_1
       3: ldc           #18                 // String *
       5: astore_2
       6: iconst_0
       7: istore_3
       8: goto          33
      11: new           #20                 // class java/lang/StringBuilder
      14: dup
      15: aload_1
      16: invokestatic  #22                 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
      19: invokespecial #28                 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
      22: aload_2
      23: invokevirtual #31                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      26: invokevirtual #35                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      29: astore_1
      30: iinc          3, 1
      33: iload_3
      34: bipush        10
      36: if_icmplt     11
      39: getstatic     #39                 // Field java/lang/System.out:Ljava/io/PrintStream;
      42: aload_1
      43: invokevirtual #45                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
      46: return
}
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Что означает ошибка java.lang.NullPointerException?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]