Proposal: drop the Java remote server, run the keywords on the oculix PyPI package
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- desktop-dev, testing-qa
Hướng nghiên cứu
Start by reading the existing Java tree, pom and assembly configuration, then inspect the oculix PyPI package and its stdio process model. The proposed change removes the Java server and Maven build, moves all 76 keywords to Python, and declares oculix in install_requires while preserving names, arguments and behavior. Done means the package installs and exposes the same Robot library without the fat jar.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
👋 Hi Hélio
@HelioGuilherme66, I built your oculix branch on WSL Ubuntu 22.04 to chase the "OCR still fails" report, and I came back with one bug, one slowness, and an idea that makes both disappear. Spoiler: the idea deletes most of the repo.
🔍 Why OCR fails on Linux
Tesseract is not the culprit, it loads fine through Legerix. OpenCV is. The branch declares io.github.julienmerconsulting.apertix:opencv:4.10.0-0 directly in the pom, and Maven's nearest-wins rule lets it override the 4.10.0-3 that OculiX 3.0.3 brings. The 4.10.0-0 jar ships a single Linux native (libopencv_java490.so) and no legacy tier, so on any glibc below 2.38 the Java server logs FATAL: OpenCV native library 'opencv_java4100' could NOT be loaded. Removing those four lines from the pom is enough, OculiX already brings the right Apertix.
🐢 Why startup takes over a minute
Before the first keyword runs, Robot calls get_library_information, and javalib-core's KeywordBeanLoader answers it by opening the whole fat jar as a JarInputStream and reading every entry to find the classes matching keywords/**/*.class. A stream cannot skip an entry, so every OpenCV, Tesseract, Leptonica and JNA native of every platform gets inflated to find three classes. A thread dump caught it there after 45 seconds. I suspect #177 is a sibling of this one.
💡 The idea
OculiX already has a Python package on PyPI, oculix, which drives OculiX 4.0.0 directly. It needs no server and no port: the JVM runs as a child process, talks JSON over stdin/stdout, and dies with the Python process. Its jar is downloaded once into ~/.oculix/lib/ and then shared by everything on the machine.
SikuliLibrary would become a pure Python Robot library on top of it:
| Today | With oculix |
|---|---|
| XML-RPC remote server on a TCP port | JVM child process over stdio, no port |
| Fat jar rebuilt by Maven at every release | No build, the jar is downloaded once |
| Keyword discovery scans the whole jar | Classes loaded on demand |
| Orphan JVMs when a run is interrupted | JVM ends with the Python process |
| OculiX bump means pom, Apertix and Legerix | OculiX bump means one version in install_requires |
For users nothing changes: same pip install robotframework-SikuliLibrary, same Library SikuliLibrary, the same 76 keyword names and arguments. The Java sources, the pom and the assembly go away, and the wheel shrinks from a fat jar to a handful of .py files.
🛠️ How I would do it
I am coding it now and will open a PR against your oculix branch, written so that you can review it one file at a time. It will contain:
- the 76 keywords in Python, with names, arguments and behaviour unchanged (timeouts, screenshots on failure, highlight);
oculixdeclared ininstall_requires;- a check at import that Java is on the PATH;
- the Java tree and the Maven build removed.
The PR will link back here.
Muito obrigado, Hélio, por manteres esta biblioteca viva ao longo de todos estes anos. Um grande abraço!
The gecko has already packed the fat jar into a very small box. 🦎
- Ngôn ngữ chính
- Java
- Star
- 163
- Fork
- 60
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của MarketSquare/robotframework-SikuliLibrary
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
MarketSquare/robotframework-SikuliLibrary#201 · 2 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
MarketSquare/robotframework-SikuliLibrary#189 · 1 bình luận ·
-
Search specific region for imageĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
MarketSquare/robotframework-SikuliLibrary#188 · 1 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
Tất cả issue của MarketSquare/robotframework-SikuliLibrary
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
2026 Error Report
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
triplea-game/triplea#15096 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug][API] Switching workflow versions leaves schedules onlineCó thể đã có người làm @zhuangchong đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
apache/dolphinscheduler#18731 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Implement JDBC Domain Enums (`SqlCategory`, `SqlExecutionStatus`, `SqlExecutionType`) in Core ModuleĐang mởcore-module enhancement good first issue
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 87/100
sdlc-pro/spring-lens#531 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/rocketmq-dashboard#7340 ·
Maintainer thường phản hồi trong vòng 3 ngày