Changeset 8b2c3de7
- Timestamp:
- Oct 11, 2018 4:49:19 PM (2 years ago)
- Branches:
- master
- Children:
- 51cbd8e
- Parents:
- 969bc2d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
launchers/macosx/I2PLauncher/routermgmt/DetectJava.swift
r969bc2d r8b2c3de7 12 12 13 13 static var hasJRE : Bool = false 14 static var hasJDK : Bool = false 14 15 static var userWantJRE : Bool = false 15 16 static var userAcceptOracleEULA : Bool = false 16 17 18 private static var sharedDetectJava: DetectJava = { 19 let javaDetector = DetectJava() 20 21 // Configuration 22 // ... 23 return javaDetector 24 }() 17 25 18 override init() { 26 // Initialization 27 28 private override init() { 19 29 super.init() 30 } 31 32 // MARK: - Accessors 33 34 35 class func shared() -> DetectJava { 36 return sharedDetectJava 37 } 38 39 @objc var javaBinary: String? { 40 didSet{ 41 print("DetectJava.javaBinary was set to "+self.javaBinary!) 42 } 20 43 } 21 44 … … 31 54 didSet{ 32 55 DetectJava.hasJRE = true 33 self.javaHome = self.javaHome.replace(target: "\n", withString: "").replace(target: "Internet Plug-Ins", withString: "Internet\\ Plug-Ins") 56 // javaHome will have a trailing \n which we remove to not break the cli 57 self.javaBinary = (self.javaHome+"/bin/java").replace(target: "\n", withString: "") 34 58 print("DetectJava.javaHome did change to "+self.javaHome) 35 59 RouterManager.shared().eventManager.trigger(eventName: "java_found", information: self.javaHome) … … 59 83 self.checkJavaEnvironmentVariable() 60 84 if !(self.javaHome.isEmpty) { 61 RouterProcessStatus.knownJavaBinPath = Optional.some(self.javaHome)62 85 DetectJava.hasJRE = true 63 86 return … … 66 89 self.runJavaHomeCmd() 67 90 if !(self.javaHome.isEmpty) { 68 RouterProcessStatus.knownJavaBinPath = Optional.some(self.javaHome)69 91 DetectJava.hasJRE = true 70 92 return … … 73 95 self.checkDefaultJREPath() 74 96 if !(self.javaHome.isEmpty) { 75 RouterProcessStatus.knownJavaBinPath = Optional.some(self.javaHome)76 97 DetectJava.hasJRE = true 77 98 return … … 79 100 } 80 101 102 @objc func getJavaViaLibexecBin() -> Array<String> { 103 return ["/usr/libexec/java_home", "-v", "1.7+", "--exec", "java"] 104 } 105 81 106 @objc func runJavaHomeCmd() { 82 107 let task = Process() 83 108 task.launchPath = "/usr/libexec/java_home" 84 task.arguments = [ ]109 task.arguments = ["-v", "1.7+"] 85 110 let pipe = Pipe() 86 111 task.standardOutput = pipe … … 89 114 90 115 var obs1 : NSObjectProtocol! 91 obs1 = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable, 92 object: outHandle, queue: nil) { notification -> Void in 93 let data = outHandle.availableData 94 if data.count > 0 { 95 let str = NSString(data: data, encoding: String.Encoding.utf8.rawValue) 96 if (str != nil) { 97 let stringVal = str! as String 98 print("got output: "+stringVal) 99 // Adding java binary here to be alike the rest 100 self.javaHome = stringVal + "/jre/bin/java" 101 } 102 // TODO: Found something, check it out 103 outHandle.waitForDataInBackgroundAndNotify() 104 } else { 105 print("EOF on stdout from process") 106 NotificationCenter.default.removeObserver(obs1) 107 // No JRE so far 108 } 116 obs1 = NotificationCenter.default.addObserver( 117 forName: NSNotification.Name.NSFileHandleDataAvailable, 118 object: outHandle, queue: nil) { 119 notification -> Void in 120 let data = outHandle.availableData 121 if data.count > 0 { 122 let str = NSString(data: data, encoding: String.Encoding.utf8.rawValue) 123 if (str != nil) { 124 let stringVal = str! as String 125 print("got output: "+stringVal) 126 self.javaHome = stringVal 127 } 128 // TODO: Found something, check it out 129 outHandle.waitForDataInBackgroundAndNotify() 130 } else { 131 print("EOF on stdout from process") 132 NotificationCenter.default.removeObserver(obs1) 133 // No JRE so far 134 } 109 135 } 110 136 111 137 var obs2 : NSObjectProtocol! 112 obs2 = NotificationCenter.default.addObserver(forName: Process.didTerminateNotification, 113 object: task, queue: nil) { notification -> Void in 114 print("terminated") 115 NotificationCenter.default.removeObserver(obs2) 138 obs2 = NotificationCenter.default.addObserver( 139 forName: Process.didTerminateNotification, 140 object: task, queue: nil) { 141 notification -> Void in 142 print("terminated") 143 NotificationCenter.default.removeObserver(obs2) 116 144 } 117 145 … … 121 149 } 122 150 151 123 152 @objc func checkDefaultJREPath() { 124 let defaultJREPath = "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" 125 if FileManager.default.fileExists(atPath: defaultJREPath) { 153 var isDir : ObjCBool = false; 154 let defaultJREPath = "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" 155 if (FileManager.default.fileExists(atPath: defaultJREPath, isDirectory:&isDir) && isDir.boolValue) { 126 156 // Found it!! 127 157 self.javaHome = defaultJREPath … … 138 168 @objc func checkJavaEnvironmentVariable() { 139 169 let dic = ProcessInfo.processInfo.environment 140 //ProcessInfo.processInfo.environment["JAVA_HOME"]141 170 if let javaHomeEnv = dic["JAVA_HOME"] { 142 171 // Maybe we got an JRE
Note: See TracChangeset
for help on using the changeset viewer.