141 JavaVirtualMachine::~JavaVirtualMachine(void) {
142 }
143
144 bool JavaVirtualMachine::StartJVM() {
145 Platform& platform = Platform::GetInstance();
146 Package& package = Package::GetInstance();
147
148 TString classpath = package.GetClassPath();
149 TString modulepath = package.GetModulePath();
150 JavaOptions options;
151
152 if (modulepath.empty() == false) {
153 options.AppendValue(_T("-Djava.module.path"), modulepath);
154 }
155
156 options.AppendValue(_T("-Djava.library.path"),
157 package.GetPackageAppDirectory() + FilePath::PathSeparator()
158 + package.GetPackageLauncherDirectory());
159 options.AppendValue(
160 _T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
161 options.AppendValue(_T("-Dapp.preferences.id"), package.GetAppID());
162 options.AppendValues(package.GetJVMArgs());
163
164 #ifdef DEBUG
165 if (package.Debugging() == dsJava) {
166 options.AppendValue(_T("-Xdebug"), _T(""));
167 options.AppendValue(
168 _T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"),
169 _T(""));
170 platform.ShowMessage(_T("localhost:5005"));
171 }
172 #endif // DEBUG
173
174 TString maxHeapSizeOption;
175 TString minHeapSizeOption;
176
177
178 if (package.GetMemoryState() == PackageBootFields::msAuto) {
179 TPlatformNumber memorySize = package.GetMemorySize();
180 TString memory =
181 PlatformString((size_t)memorySize).toString() + _T("m");
182 maxHeapSizeOption = TString(_T("-Xmx")) + memory;
217
218 if (package.HasSplashScreen() == true) {
219 options.AppendValue(TString(_T("-splash:"))
220 + package.GetSplashScreenFileName(), _T(""));
221 }
222
223 if (mainModule.empty() == true) {
224 options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName),
225 _T(""));
226 } else {
227 options.AppendValue(_T("-m"));
228 options.AppendValue(mainModule);
229 }
230
231 return launchVM(options, vmargs);
232 }
233
234 void JavaVirtualMachine::configureLibrary() {
235 Platform& platform = Platform::GetInstance();
236 Package& package = Package::GetInstance();
237 TString libName = package.GetJVMLibraryFileName();
238 platform.addPlatformDependencies(&javaLibrary);
239 javaLibrary.Load(libName);
240 }
241
242 bool JavaVirtualMachine::launchVM(JavaOptions& options,
243 std::list<TString>& vmargs) {
244 Platform& platform = Platform::GetInstance();
245 Package& package = Package::GetInstance();
246
247 #ifdef MAC
248 // Mac adds a ProcessSerialNumber to args when launched from .app
249 // filter out the psn since they it's not expected in the app
250 if (platform.IsMainThread() == false) {
251 std::list<TString> loptions = options.ToList();
252 vmargs.splice(vmargs.end(), loptions,
253 loptions.begin(), loptions.end());
254 }
255 #else
256 std::list<TString> loptions = options.ToList();
257 vmargs.splice(vmargs.end(), loptions, loptions.begin(), loptions.end());
|
141 JavaVirtualMachine::~JavaVirtualMachine(void) {
142 }
143
144 bool JavaVirtualMachine::StartJVM() {
145 Platform& platform = Platform::GetInstance();
146 Package& package = Package::GetInstance();
147
148 TString classpath = package.GetClassPath();
149 TString modulepath = package.GetModulePath();
150 JavaOptions options;
151
152 if (modulepath.empty() == false) {
153 options.AppendValue(_T("-Djava.module.path"), modulepath);
154 }
155
156 options.AppendValue(_T("-Djava.library.path"),
157 package.GetPackageAppDirectory() + FilePath::PathSeparator()
158 + package.GetPackageLauncherDirectory());
159 options.AppendValue(
160 _T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
161 options.AppendValues(package.GetJavaOptions());
162
163 #ifdef DEBUG
164 if (package.Debugging() == dsJava) {
165 options.AppendValue(_T("-Xdebug"), _T(""));
166 options.AppendValue(
167 _T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"),
168 _T(""));
169 platform.ShowMessage(_T("localhost:5005"));
170 }
171 #endif // DEBUG
172
173 TString maxHeapSizeOption;
174 TString minHeapSizeOption;
175
176
177 if (package.GetMemoryState() == PackageBootFields::msAuto) {
178 TPlatformNumber memorySize = package.GetMemorySize();
179 TString memory =
180 PlatformString((size_t)memorySize).toString() + _T("m");
181 maxHeapSizeOption = TString(_T("-Xmx")) + memory;
216
217 if (package.HasSplashScreen() == true) {
218 options.AppendValue(TString(_T("-splash:"))
219 + package.GetSplashScreenFileName(), _T(""));
220 }
221
222 if (mainModule.empty() == true) {
223 options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName),
224 _T(""));
225 } else {
226 options.AppendValue(_T("-m"));
227 options.AppendValue(mainModule);
228 }
229
230 return launchVM(options, vmargs);
231 }
232
233 void JavaVirtualMachine::configureLibrary() {
234 Platform& platform = Platform::GetInstance();
235 Package& package = Package::GetInstance();
236 TString libName = package.GetJavaLibraryFileName();
237 platform.addPlatformDependencies(&javaLibrary);
238 javaLibrary.Load(libName);
239 }
240
241 bool JavaVirtualMachine::launchVM(JavaOptions& options,
242 std::list<TString>& vmargs) {
243 Platform& platform = Platform::GetInstance();
244 Package& package = Package::GetInstance();
245
246 #ifdef MAC
247 // Mac adds a ProcessSerialNumber to args when launched from .app
248 // filter out the psn since they it's not expected in the app
249 if (platform.IsMainThread() == false) {
250 std::list<TString> loptions = options.ToList();
251 vmargs.splice(vmargs.end(), loptions,
252 loptions.begin(), loptions.end());
253 }
254 #else
255 std::list<TString> loptions = options.ToList();
256 vmargs.splice(vmargs.end(), loptions, loptions.begin(), loptions.end());
|