RSSはこちら
るみさーばーアカウントでログイン

【備忘録】java -jarコマンドから開放されよう! C言語からjarファイルを実行する方法

作成日:2024-04-15 18:47:07
最新更新日:2024-04-15 18:51:19

JAVA最大の欠点


それはもちろん./で実行できない事!
java -jarと毎回書いて実行する必要が在る、、、
さすがにめんどうすぎるので、C言語からjarを実行して./で実行できるようにしてしまおう!

あ、ちなみにこれはpixiv-dlpの開発記録その1です

C側のコード


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
int i;

//実行するコマンド
char command[1000] = "java -jar /usr/local/bin/pixiv-dlp-bin/java.jar";

//コマンドライン引数をスペース区切りで結合
for (i = 1; i < argc; i++) {
strcat(command, " ");
strcat(command, argv[i]);
}

//コマンド実行
int status = system(command);

return status;
}


単純です、systemでjavaを実行するだけ。

あとはインストールスクリプトも作ってしまおう!!!!!

インストーラー


インストールスクリプトはPythonを使ったぜ、rootで実行されたか検知する機能付き
import os

BUILD_DIR = "./build/libs/"
BIN_DIR = "/usr/local/bin/"
JAR_FILE_NAME = "pixiv-dlp-1.0-SNAPSHOT-all.jar"

#インスコする関数
def INSTALL():
if(os.path.exists(BUILD_DIR + JAR_FILE_NAME)):
print("jarファイルが在るよ!")

#フォルダがなければ作る
if(os.path.exists(BIN_DIR + "pixiv-dlp-bin") == False):
os.makedirs(BIN_DIR + "pixiv-dlp-bin")
print("フォルダがなかったので作っといたで")

#gccでCをビルドする
if(os.system("gcc ./java_runner.c -o " + BIN_DIR + "pixiv-dlp") == 0):
print("gccが成功しました!")

#jarファイルをコピーする
if os.system("cp " + BUILD_DIR + JAR_FILE_NAME + " " + BIN_DIR + "pixiv-dlp-bin/java.jar") == 0:
print("全て成功!")
else:
print("無理だった!!")
else:
print("gcc失敗!!!")
else:
print("jarファイルがないよ!!!ビルドしろ!!")

#ルートで実行されたか?
if(os.geteuid() == 0):
INSTALL()
else:
print("rootで実行しろ!!")




シェア



ログインするとコメントを書くことができます

もっとコメントを見る