RSS ログイン
Date==== Time==== Update==== Time==== Title==== [[W]WRITE [RET]READ [?]HELP]
2024-04-15 18:47:07 2024-04-15 18:51:19 【備忘録】java -jarコマンドから開放されよう! C言語からjarファイルを実行する方法
TEXT FILE (   2KiB ) を受信しますか? [Y]/[N] > Y

備忘録 JAVA C Pixiv-dlp

JAVA最大の欠点

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

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

C側のコード

#include
#include
#include

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

//実行するコマンド
char command1000

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

//コマンド実行
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で実行しろ!!")