如何解决 - java.lang.IllegalArgumentException:text不能为null或为空

时间:2016-11-30 14:36:46

标签: java user-interface personality-insights

我试图在类的顶部声明变量,所以我不必在使用它们时不断声明它们。我已经这样做了,直到我想运行程序才出现错误。我的代码如下:

public class UI extends javax.swing.JFrame {

/**
 * Creates new form UI
 */
public UI() {    
    initComponents();
    this.service.setUsernameAndPassword("9a1d5de6-7c2b-427d-a574-d6fe097c86b9", "ztil6GSHwd34");  
    this.str = txtInput.getText();


}
String str;
PersonalityInsights service = new PersonalityInsights();
 ArrayList<Double> percentagesList = new ArrayList();        
 Profile profile = service.getProfile(str).execute();
 Gson gson = new Gson();  
 Root C = gson.fromJson(profile.toString(), Root.class);
 Root.SubTree t = C.getSubTree(); //Gets subtree from root    
 ArrayList<Children> c = t.getChildren(); //Gets <Children> from Root.getSubTree

错误

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: text cannot be null or empty

我相信文字str不能为空或空。我该如何解决这个问题? str在运行时已经有文本,所以不确定为什么会发生此错误。

3 个答案:

答案 0 :(得分:2)

所以你有一个UI类,这里的所有变量都是数据成员...... 这里的问题似乎是str,它是null,因此你的服务正在抱怨。 数据成员在构造函数之前初始化,因此在设置配置文件时ur str为null。 我会在类中声明成员并在构造函数中初始化它们,或者在第6行给出一个有效的初始值。

答案 1 :(得分:0)

使用此行,您可以定义一个新变量str。默认情况下为空:

 String str;

似乎this.strstr是不同的变量。

删除该行并在调用方法时使用this.str

答案 2 :(得分:0)

您应该发布整个堆栈跟踪以更好地理解问题,特别是在抛出异常的那一刻? 好的,我刚看到你的代码中的注释:)

您不应该初始化

Profile profile = service.getProfile(str).execute();

在类中,但直接在构造函数中读取str之后 成分

public UI() {  
    txtInput.setText("TEXT");
    profile = service.getProfile(str).execute();
    Root C = gson.fromJson(profile.toString(), Root.class);
    Root.SubTree t = C.getSubTree(); //Gets subtree from root    
    ArrayList<Children> c = t.getChildren(); //Gets <Children> from   Root.getSubTree