JvmBuilderは、Jvmインスタンスを作るための構造体。
use j4rs::JvmBuilder;
let mut builder = JvmBuilder::new() 〜 .build()?;
JvmBuilderのメソッド(抜粋)。
メソッド | 説明 | 例 |
---|---|---|
classpath_entry(&mut self, cp_entry: ClasspathEntry) -> &mut JvmBuilder |
クラスパスにエントリー(ひとつのjarファイル)を追加する。 (→LocalJarArtifact) |
.classpath_entry(ClasspathEntry::new("/path/to/hoge.jar")) |
classpath_entries(&mut self, cp_entries: Vec<ClasspathEntry>) -> &mut JvmBuilder |
クラスパスに複数のエントリーを追加する。 | →classpath_entriesの例 |
java_opt(&mut self, opt: JavaOpt) -> &mut JvmBuilder |
javaコマンドのオプションを追加する。 | .java_opt(JavaOpt::new("-Dhoge=value")) |
java_opts(&mut self, opts: Vec<JavaOpt>) -> &mut JvmBuilder |
javaコマンドのオプションを複数追加する。 | |
with_maven_settings(&mut self, maven_settings:
MavenSettings) |
Mavenのリポジトリーをセットする。 | .with_maven_settings(MavenSettings::new(vec![ |
build(&mut self) -> j4rs::errors::Result<Jvm> |
Jvmインスタンスを生成する。 | let jvm = JvmBuilder::new().〜.build(); |
use std::fs; use std::path::Path; use j4rs::{errors::J4RsError, ClasspathEntry, JvmBuilder};
let mut builder = JvmBuilder::new(); let jar_dir = Path::new("/path/to/jar_dir"); let jar_files: Vec<String> = find_jar_files(jar_dir); let cp_entries: Vec<ClasspathEntry> = jar_files .iter() .map(|jar| ClasspathEntry::new(jar.as_str())) .collect(); let builder = builder.classpath_entries(cp_entries); let jvm = builder.build()?;
fn find_jar_files(path: &Path) -> Vec<String> { let mut jar_files = Vec::new(); if path.is_file() { if path.extension().and_then(|s| s.to_str()) == Some("jar") { jar_files.push(path.display().to_string()); } } else if path.is_dir() { if let Ok(entries) = fs::read_dir(path) { for entry in entries { let entry = entry.unwrap(); let entry_path = entry.path(); if entry_path.is_file() && entry_path.extension().and_then(|s| s.to_str()) == Some("jar") { jar_files.push(entry_path.display().to_string()); } } } } jar_files }