Ta przykładowa procedura generuje dwa komunikaty ostrzegawcze Throw :: nocatch w oknie jądra. Czy jakoś można nimi manipulować?Uncaught Throw generowany przez JLink lub UseFrontEnd
Przykład składa się z tego kodu w pliku "test.m" stworzonego w katalogu C: \ Temp:
Needs["JLink`"];
$FrontEndLaunchCommand = "Mathematica.exe";
UseFrontEnd[NotebookWrite[CreateDocument[], "Testing"]];
Następnie komendy te wklejane i uruchomić w wierszu polecenia systemu Windows:
PATH = C:\Program Files\Wolfram Research\Mathematica\8.0\;%PATH%
start MathKernel -noprompt -initfile "C:\Temp\test.m"
Uzupełnienie
Powodem używania UseFrontEnd w przeciwieństwie do UseFrontEnd jest to, że interaktywny interfejs może być wymagany do zachowania danych wyjściowych i komunikatów z notebooków, które są zwykle uruchamiane interaktywnie. Na przykład, C: \ temp \ test.m zmodyfikowany tak:
Needs["JLink`"];
$FrontEndLaunchCommand="Mathematica.exe";
UseFrontEnd[
nb = NotebookOpen["C:\\Temp\\run.nb"];
SelectionMove[nb, Next, Cell];
SelectionEvaluate[nb];
];
Pause[10];
CloseFrontEnd[];
i notebook C: \ temp \ run.nb utworzone z pojedynczej komórki, zawierający:
x1 = 0; While[x1 < 1000000,
If[Mod[x1, 100000] == 0,
Print["x1=" <> ToString[x1]]]; x1++];
NotebookSave[EvaluationNotebook[]];
NotebookClose[EvaluationNotebook[]];
ten kod , uruchomione z wiersza poleceń systemu Windows, uruchomi się interaktywnie i zapisze dane wyjściowe. Nie można tego osiągnąć za pomocą UsingFrontEnd lub MathKernel -script "C: \ Temp \ test.m".
@ Leonid, Działa również z poziomu okna jądra. Problem wydaje się być pewną interakcją między metodą -initfile i JLink. Nie ma żadnych wiadomości za pomocą -script, ale to nie działa tak, jak chcę. Aktualnie na M8.0.1 XP SP3. Wypróbuję jutro inną maszynę. –
Przepraszam - w jakiś sposób przegapiłem te błędy. Teraz je odtworzyć. Nie mam pojęcia, dlaczego wcześniej ich nie zauważyłem. –