るみさんのブログ

【備忘録】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で実行しろ!!")




シェア



コメント欄の復旧は少し待ってね