У меня есть программа на Rust, которая использует Aeron через aeron-rs ящик.
Каждый раз, когда я хочу запустить свою программу, мне нужно сначала вручную запустить драйвер. На самом деле в крейте прямо указано, что он работает просто как оболочка для работающего драйвера.
Я хотел бы, чтобы драйвер запускался при запуске моей программы.
Я знаю, что Aeron предоставляет встроенный драйвер, но я понятия не имею, как его интегрировать.
До сих пор я помещал встроенный JAR-файл драйвера в свою папку src.
my-project/
src/
aeron-all-1.32.0-SNAPSHOT.jar
Я использовал макрос include_bytes!
, чтобы попытаться включить JAR в сборку.
fn main() {
include_bytes!("aeron-all-1.32.0-SNAPSHOT.jar");
}
Я не вижу банку в папке сборки.
Затем следующий код должен запускать драйвер при запуске:
if cfg!(target_os = "windows") {
Command::new("cmd")
.args(&[
"/C",
"%JAVA_HOME%\\bin\\java \
-cp aeron-all-1.32.0-SNAPSHOT.jar \
%JVM_OPTS% io.aeron.driver.MediaDriver %*",
])
.output()
.expect("Failed to execute external process.")
} else {
Command::new("sh")
.arg("-c")
.arg(
"${JAVA_HOME}/bin/java \
-cp aeron-all-1.32.0-SNAPSHOT.jar \
${JVM_OPTS} io.aeron.driver.MediaDriver \"$@\"",
)
.output()
.expect("Failed to execute external process.")
};
Это правильный способ запустить файл jar?
include_bytes
, чтобы понять, что он делает. - person Shepmaster   schedule 11.01.2021