如何执行(向量) Storage.getInstance().readObject(filePath);在 Java 8 Swing 包中

Posted

技术标签:

【中文标题】如何执行(向量) Storage.getInstance().readObject(filePath);在 Java 8 Swing 包中【英文标题】:How to Execute (Vector) Storage.getInstance().readObject(filePath); in Java 8 Swing Package 【发布时间】:2022-01-06 14:23:56 【问题描述】:

Windows 10 专业版 最新模拟器 Java Swing 项目

我想执行“Vector a1 = (Vector) Storage.getInstance().readObject(filePath);” 在 Windows 10 平台上运行的 Java Swing 应用程序中,我尝试在 Swing 包中导入 CodenameOne.jar,但是在执行上述代码时,在 Storage.getInstance() 中出现空指针异常

有没有办法在 Swing 中执行此操作?

想法?

最好的问候。

谢谢,我没有初始化显示,但是“Display.init(Object m)”需要一个对象参数并且不推荐使用 Init 方法。

能否请您提供代号一个显示依赖项? 也许还有一个 java Swing sn-p 代码来初始化 Display 以执行 Storage.getInstance().readObject(filePath)

想法?

最好的问候

谢谢,通过 init(工作目录)解决了抛出的异常。 这是用于允许我执行的代码 sn-p: Storage.getInstance().readObject(filePath)。

    String filePath = incSrv.Pwd();// gets working directory
    try 
        javax.swing.SwingUtilities.invokeLater(new Runnable() 
            public void run() 
                Display.init(filePath);
                String fileName = "A1-MMA.properties";
                Vector a1 = (Vector) Storage.getInstance().readObject(filePath);
            
        );
     catch (Exception e) 
    

而且它似乎确实有效, 但是,我留下了一个显示为模态的黑色表格。 我该如何避免或处理它?。

仅供参考:我在这里创建的是在 Codenameone 中序列化 Vector 的解决方法。我使用“Storage.getInstance().writeObject(Path, Vector)”将矢量保存到文件 我将文件转换为字节并将其写入 Swing Server VIA 套接字。 在 Swing 服务器上使用 Storage.getInstance().readObject(file) 我已将对象从我的应用程序反序列化为 Vector。 这似乎运行良好,并且比我用于将复杂向量从应用程序传递到 Swing 服务器的当前方法更有效。

如果您看到此解决方法的危险信号,请告诉我? 像 Swing Server 上的 Storage.getInstance().readObject(file) 功能可能会消失? 这种方法将节省大量往返于 App/Server 的 movind Vector 数据的时间。

致以最诚挚的问候

Storage.getInstance().readObject(file) // (A1ServiceSrv.java:571)
Caused this Exception:
java.lang.NullPointerException
at com.codename1.io.Storage.init(Storage.java:89)
at com.codename1.io.Storage.getInstance(Storage.java:112)
at Main.A1ServiceSrv.loadVectorFromFile(A1ServiceSrv.java:571)

问候

2021 年 12 月 11 日: 谢谢夏,

我在我的类路径 CodenameOne.jar 中包含更新日期为 2021 年 12 月 11 日 CN1 刷新后。 获得相同的空指针异常。 传入路径“C:\Src1\A1-Arms\A1-Server\A1-MMA.properties”(绝对路径) 也尝试过“A1-MMA.properties”,但我认为 Codenameone 不知道我的主路径在哪里,因为我们没有像我们那样初始化它

    Display.init("Current Working Directory where files reside");

这是不调用 Display.init 的新鲜堆栈跟踪 (12-20-2021)

处的 java.lang.NullPointerException
com.codename1.ui.Display.getResourceAsStream(Display.java:3086)
        at com.codename1.io.Log.print(Log.java:327)
        at com.codename1.io.Log.logThrowable(Log.java:299)
        at com.codename1.io.Log.e(Log.java:285)
        at com.codename1.io.Storage.readObject(Storage.java:271)
        at Main.A1ServiceSrv.loadVectorFromFile(A1ServiceSrv.java:596)
            
            vector = (Vector) Storage.getInstance().readObject(filePath); // (A1ServiceSrv.java:596)

【问题讨论】:

能否提供异常的堆栈跟踪。我猜你的代码中缺少Display.init(),这是初始化代号一所必需的。 谢谢,我没有初始化显示,但是“Display.init(Object m)”需要一个对象参数,并且不推荐使用 Init 方法。你能给我提供代号显示依赖项吗?或许还有一段 java Swing sn-p 的代码来初始化 Display 以便执行 Storage.getInstance().readObject(filePath) 的想法?最好的问候 它已被弃用,因为它是供内部使用的。在桌面构建的情况下,您需要使用它。给它一个代表你的主目录的字符串。但是异常的堆栈是什么? 请查看我的更新回复。 好的,如果这解决了问题并且您所需要的只是“存储”,让我们退后一步。如果不执行 display.init() 空指针异常的堆栈跟踪是什么? 【参考方案1】:

这个提交有望解决这个问题:https://github.com/codenameone/CodenameOne/commit/72bf283bdaaefe5207bb9fd6787578e3ef61522c 如果不让我知道一个新的堆栈

【讨论】:

以上是关于如何执行(向量) Storage.getInstance().readObject(filePath);在 Java 8 Swing 包中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用算法填充向量的向量

OpenMP 矩阵向量乘法仅在一个线程上执行

Matlab - 如何对两个矩阵之间的每一行执行操作?

在 2D 向量上执行单行算术以找到简化的行形式 C++

如何将元素插入向量的开头?

如何更新匹配维度向量的张量