• R/O
  • SSH
  • HTTPS

exewrap: Commit


Commit MetaInfo

Revision54 (tree)
Time2018-06-26 23:21:03
Authorhirukawa_ryo

Log Message

* exewrap 1.2.6
JDK9のフォルダー構成に対応しました。JDK8まではjdkフォルダーの直下にjreフォルダーがあり、その中にbin/server/jvm.dll, bin/client/jvm.dllがありました。
JDK9以降ではjdkフォルダーの直下にjreフォルダーはなく、jdk直下にbin/server/jvm.dll, bin/client/jvm.dllがあります。これを検出できるようになりました。

Change Summary

Incremental Difference

--- exewrap/trunk/exewrap/src/jvm.c (revision 53)
+++ exewrap/trunk/exewrap/src/jvm.c (revision 54)
@@ -468,10 +468,11 @@
468468 FindClose(hSearch);
469469 if (found)
470470 {
471- strcpy(jre1, jdk1);
472- strcat(jre1, "\\jre");
473-
474- if (FindJavaVM(jvmpath, jre1, useServerVM))
471+ //JDK9以降、jvm.dllの場所が変更になりました。
472+ //JDK8までは jdk-8u152/jre/bin/server/jvm.dll のようにjdkの中にjreがありましたが、
473+ //JDK9以降は jdk-9/bin/server/jvm.dll のようにjreフォルダなしで直接binが配置されるようになりました。
474+ //そのため、jdk に bin/server/jvm.dll があるか探してなければ従来通り、jre/bin/server/jvm.dll を探します。
475+ if (FindJavaVM(jvmpath, jdk1, useServerVM))
475476 {
476477 int bits = GetArchitectureBits(jvmpath);
477478 if (bits == 0 || bits == GetProcessArchitecture())
@@ -485,6 +486,28 @@
485486 jvmpath[0] = '\0';
486487 }
487488 }
489+ else
490+ {
491+ //jdk直下には bin/server/jvm.dll がなかったので、jre を連結して、
492+ //jre/bin/server/jvm.dll を探します。
493+ strcpy(jre1, jdk1);
494+ strcat(jre1, "\\jre");
495+ if(FindJavaVM(jvmpath, jre1, useServerVM))
496+ {
497+ int bits = GetArchitectureBits(jvmpath);
498+ if (bits == 0 || bits == GetProcessArchitecture())
499+ {
500+ //jdk/jreが見つかってもJAVA_HOMEに設定するのはjdkディレクトリです。
501+ SetEnvironmentVariable("JAVA_HOME", jdk1);
502+ lstrcpy(binpath, jdk1);
503+ lstrcat(binpath, "\\bin");
504+ }
505+ else
506+ {
507+ jvmpath[0] = '\0';
508+ }
509+ }
510+ }
488511 }
489512 }
490513 }
@@ -542,7 +565,7 @@
542565 {
543566 if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
544567 {
545- lstrcat(jre2, "\\");
568+ lstrcat(jre2, "\\..\\");
546569 lstrcat(jre2, fd.cFileName);
547570 found = TRUE;
548571 }
@@ -550,7 +573,7 @@
550573 FindClose(hSearch);
551574 if (found)
552575 {
553- if (FindJavaVM(jvmpath, jre2, useServerVM) == FALSE)
576+ if (FindJavaVM(jvmpath, jre2, useServerVM))
554577 {
555578 int bits = GetArchitectureBits(jvmpath);
556579 if (bits == 0 || bits == GetProcessArchitecture())
@@ -775,8 +798,6 @@
775798 }
776799 else
777800 {
778- lstrcpy(output, jre);
779- lstrcat(output, "\\bin\\client");
780801 return FALSE;
781802 }
782803 }
Show on old repository browser