如何解决 \- java.lang.IllegalArgumentException: text cannot be null or empty

新手上路,请多包涵

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

 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 不能为 null 或为空。我该如何解决这个问题? str 运行时里面已经有文本,所以不确定为什么会出现这个错误。

原文由 Alia Su 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

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

原文由 karen 发布,翻译遵循 CC BY-SA 3.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

原文由 greg 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题