將 JSL 作為加載項與腳本運行時出現奇怪的錯誤。大家好,
我有一個我寫的腳本,我把它變成了一個加載項。上次我使用它時,大約是 2023 年 11 月,一切運行良好。我再次運行它,當我將它作為加載項運行時,我遇到了一個非常奇怪的錯誤/錯誤,但它沒有當我單獨運行JSL 檔案時不會發生這種情況。
因此,該腳本運行一些建模並產生輸出窗口,該窗口應該以圖形方式和表格的形式顯示每次調整運行的結果。輸出應該如下所示(這是從腳本本身運行的):

輸出視窗是從資料表生成的,該資料表從建模平台收集所有擬合統計資料。

再說一遍,該腳本運行良好,並完成了它應該做的一切。然後,當我將其作為jmpaddin 檔案並將其安裝在JMP 中時,會發生一些情況,程式碼會變得混亂,並且不會引用輸出表,而是返回到包含我正在使用的Y 和X 的原始數據表用於建模。因此,輸出視窗的圖形產生器部分為空白,並且我從 JMP 收到錯誤::Tune Run 列不存在(原始資料表中不存在,但輸出資料表中存在) )。
這是同類建模的輸出,但將其作為插件而不是 JSL 運行——沒有圖形生成器:

而且,當轉到 JMP 主視窗中的視窗清單時,您可以看到,對於我將其作為插件運行的實例,它從原始資料表 T20-XL 生成了 Bootstrap Forest Results 視窗。因此,該資料表中自然不存在 :Tune Run 欄位。但是,當我將其作為直接 JSL 運行時,它會按預期從摘要輸出資料表正確產生輸出視窗(Bootstrap Forest Results 2)。

這是我得到的錯誤:

日誌報告顯示以下內容:


我無法弄清楚出了什麼問題以及為什麼加載項版本試圖使用原始資料表而不是它應該使用的摘要輸出資料表。我也不明白為什麼它可以直接從 JSL 文件運行它,但作為一個加載項它根本無法正常工作。
有其他人遇到這個問題嗎?如果是這樣,您是如何糾正它的,您是否能夠弄清楚它最初是如何發生的?
謝謝!,
DS
自動化和腳本編寫數據探索和視覺化預測建模和機器學習視窗回覆:將 JSL 作為加載項與腳本運行時出現奇怪的錯誤。您可以將圖形產生器訊息傳送到特定的資料表嗎?
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
dt << 圖形產生器(...
回覆:將 JSL 作為加載項與腳本運行時出現奇怪的錯誤。嗨@jthi ,
是的,我可以,但我認為問題是不同的——記憶體分配和分配的問題。
我認為這是因為我在電腦上運行兩個 JMP Pro 實例。所以我有兩個 JMP Home Windows - 原來的,然後另一個在主視窗名稱中添加了 [2]。當我嘗試在 JMP 的第二個實例中運行插件時,出現錯誤,但在 JMP 的第一個實例中運行插件時卻沒有出現錯誤。我認為運行第二個 JMP 實例時存在無法正確處理問題的錯誤。
以前是不這樣做的。我經常運行兩個 JMP 實例,一個在後台處理數據,另一個可用於處理人們給我的新數據。我嘗試在第二個實例中運行建模,這樣如果我雙擊 jmp 文件,它將在 JMP 的第一個實例中打開,並允許我在另一個實例的後台運行建模的情況下進行處理。我認為 JMP 的最新更新中可能出現了問題,因為以前從未出現過此問題。
謝謝!
DS
回覆:運行時 JSL 作為插件而不是腳本出現奇怪的錯誤。您如何建立您的插件?也許強制使用這裡的命名空間會讓它作為插件失敗(但不確定為什麼它不會早點發生)?

回覆:執行 JSL 作為插件而不是腳本時出現奇怪的錯誤。你好@jthi ,
我以通常的方式建立我的插件:創建一個 .def 文件,安裝它,然後根據插件的需要更改工具列。我正在像往常一樣運行我的插件。我嘗試通過取消選中或選中該框來更改“此處”命名空間,但似乎無法解決問題。
再次檢查後,我現在無法在 JMP 的單一實例期間運行該插件。我不斷遇到同樣的錯誤。也許這就是@Craige_Hales所評論的,但如果是這樣,我不確定如何解決這個問題,或者為什麼某些東西突然發生變化導致插件故障。如前所述,JSL 運作良好。
謝謝! ,
DS
回覆:執行 JSL 作為插件而不是腳本時出現奇怪的錯誤。另請參閱Bug 或 Feature?? ;聽起來您遇到的插件的 eval 上下文可能與稍後使用的上下文不同……但根據您的描述,我並不確定。 JMP 的目前資料表在 eval 上下文中是已知的。通常,腳本使用一個 eval 上下文,它屬於 JSL 視窗或平台視窗。插件腳本運行時不需要任何上下文,因此提供了一個瞬時 eval 上下文。當外掛程式腳本結束時(很可能會運行到最後),瞬時 eval 上下文就會消失。如果它打開了一個窗口,並且該窗口中的按鈕運行更多腳本,它們將使用該窗口的 eval 上下文,而該腳本不知道前一個腳本。
回覆:以插件形式運行 JSL 而非腳本時出現奇怪的錯誤。嗨@Craige_Hales ,
我猜問題肯定出在你描述的情況。我的程式碼產生的最終結果視窗確實有一些按鈕可以執行一些操作,例如重新運行模型擬合或重新啟動程式碼。而且,既然 JSL 檔案運作流暢,但插件卻不行,那問題肯定出在你提到的評估過程上。
我不明白的是,為什麼它之前運作正常,現在卻出現了問題?此外,我也不知道該如何解決這個問題,因為我根本不知道問題最初是如何產生的。如同前面所提到的,它在2023年10月左右仍運作良好。
我的程式碼基本上就是一堆根據使用者互動呼叫和執行的Expr()函數。如果你想看看能不能重現這個錯誤,我可以分享一下程式碼。
會不會是 JMP 的某個設定變更導致了這個問題?如果能找到解決方法就太好了,因為我更喜歡把它當作插件運行,而不是透過 JSL 運行。
謝謝! ,
DS