Miałem podobne problemy i okazało się, że , ponieważ autonomiczny dist Jython nie obsługuje buforowania, nie obsługuje także podejścia "import *". To nie jest jasno udokumentowane nigdzie w oficjalnych docs jython, ale doszedłem do wniosku, to na podstawie wielu różnych raportów o błędach:
Znaki z tego ostatniego linku:
Tak jak zauważył Oti, w wersji samodzielnej musisz wykonać pełny import, aby odnieść sukces.
Aby naprawić swój problem, użyj niestandardowego standardowego jython.jar wygenerowany przez zainstalowanie jython za pomocą opcji "Standard".
Jeśli chciałeś spakować i rozpowszechniać plik jython.jar razem z aplikacją, na wypadek, gdyby użytkownik nie miał zainstalowanego Jython, musisz również skopiować/pase pełny folder "Lib" z katalogu instalacyjnego Jython w cokolwiek lokalizacja kończysz umieszczając plik jython.jar. Umożliwia to dostęp do stdlib Pythona, który nie jest zawarty w standardowym pliku jar.
UPDATE: Po zabawy więcej, myślę, że mam poprawkę, aby włączyć „import *” importu typu nawet podczas korzystania z autonomicznego jar. Wszystko, co należy zrobić, to włączyć buforowanie!
Można to zrobić albo poprzez dodanie następujących opcji do JVM, gdy uruchomiony jython:
-Dpython.cachedir.skip = fałszywy -Dpython.cachedir = DESIRED CACHE PATH
(Uwaga: drugi argument jest opcjonalny, a jeśli pozostanie pusty, zostanie użyta wartość domyślna)
Jeśli masz problem z uruchomieniem aplikacji InteractiveConsole osadzonej w aplikacji (która jest w Miałem problem) możesz dodać te właściwości przed inicjalizacją konsoli:
Properties props = new Properties();
props.put("python.cachedir.skip", "false");
props.put("python.cachedir", "DESIRED CACHE PATH"); // again, this option is optional
InteractiveConsole.initialize(System.getProperties(), props, new String[0]);
Jest to niezwykle częste pytanie/problem. Jest szansa, że zmieniłbyś tytuł na "Dlaczego Jython nie chce znaleźć mojego pakietu Java?" w ten sposób więcej osób prawdopodobnie to znajdzie. –
Zmieniłem nazwę - masz rację, to może się zdarzyć każdemu. – MikeHoss
Dzięki za zmianę nazwy! –