powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Что означает ошибка java.lang.NullPointerException?
11 сообщений из 36, страница 2 из 2
Что означает ошибка 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
11 сообщений из 36, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Что означает ошибка java.lang.NullPointerException?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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