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
}