Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Proposal: drop the Java remote server, run the keywords on the oculix PyPI package

オープン
#205 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
活発
技術スタック
java, python

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

enhancement

Portuguese gecko with the Galo de Barcelos

👋 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);
  • oculix declared in install_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. 🦎

主要言語
Java
スター
163
フォーク
60
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

MarketSquare/robotframework-SikuliLibrary のほかの issue

MarketSquare/robotframework-SikuliLibrary の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。