【问题标题】:How to solve - java.lang.IllegalArgumentException: text cannot be null or empty如何解决 - java.lang.IllegalArgumentException: text cannot be null or empty
【发布时间】:2016-11-30 14:36:45
【问题描述】:

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

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 在运行时已经有文本,所以不确定为什么会发生这个错误。

【问题讨论】:

  • str 运行时没有文本。您没有初始化该变量。 String str;
  • 您的示例不可执行。你把临界线叫做哪里?你能提供更多信息吗?

标签: java user-interface personality-insights


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在这一行中,您定义了一个新变量 str。默认为空:

     String str;
    

    看来this.strstr 是不同的变量。

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

    【讨论】:

    • 对不起,我已经这样做了,说找不到变量 str。
    • 重点是,您截取的代码不是有效的 java/android 应用程序代码。 UI 方法之外的代码:它是在其他方法中执行的吗?在哪个班?
    • 代码已经更新,同一个类中有几个方法在使用它。
    • 啊,好吧,在这种情况下,karen ist 完全正确。在设置字段后执行 java 构造函数。 str变量开头为null,在构造函数中设置,但构造函数永远不会被调用。
    【解决方案3】:

    您应该发布整个堆栈跟踪以更好地了解问题,特别是在哪个时刻抛出异常? 好吧,我刚刚在您的代码中看到了评论:)

    你不应该初始化

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2019-10-04
      • 2017-01-05
      • 2018-06-22
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多