Mercurial > hg > release > heapstats-2.0
changeset 181:42a918844ccd
Bug 3261: Cannot start FXAnalyzer when HeapStatsFXAnalyzer.main() is called directly
Reviewed-by: ykubota
https://github.com/HeapStats/heapstats/pull/59
author | Yasumasa Suenaga <yasuenag@gmail.com> |
---|---|
date | Mon, 12 Dec 2016 22:29:55 +0900 |
parents | ad9e1645ff33 |
children | 433e4bcd41ad |
files | ChangeLog analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/WindowController.java analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/utils/HeapStatsUtils.java |
diffstat | 3 files changed, 20 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Dec 12 22:18:39 2016 +0900 +++ b/ChangeLog Mon Dec 12 22:29:55 2016 +0900 @@ -1,6 +1,7 @@ 2016-12-12 Yasumasa Suenaga <yasuenag@gmail.com> * Bug 3260: Cannot run FXAnalyzer via Maven task without NetBeans + * Bug 3261: Cannot start FXAnalyzer when HeapStatsFXAnalyzer.main() is called directly 2016-12-07 Yasumasa Suenaga <yasuenag@gmail.com>
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/WindowController.java Mon Dec 12 22:18:39 2016 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/WindowController.java Mon Dec 12 22:29:55 2016 +0900 @@ -279,14 +279,7 @@ this.hostServices = hostServices; } - /** - * Load plugins which is defined in heapstats.properties. - */ - public void loadPlugin(){ - String resourceName = "/" + this.getClass().getName().replace('.', '/') + ".class"; - String appJarString = this.getClass().getResource(resourceName).getPath(); - appJarString = appJarString.substring(0, appJarString.indexOf('!')).replaceFirst("file:", ""); - + private ClassLoader createPluginClassLoader(String appJarString){ Path appJarPath; try{ @@ -317,7 +310,19 @@ Logger.getLogger(WindowController.class.getName()).log(Level.SEVERE, null, ex); } - pluginClassLoader = (jarURLList == null) ? WindowController.class.getClassLoader() : new URLClassLoader(jarURLList); + return (jarURLList == null) ? WindowController.class.getClassLoader() : new URLClassLoader(jarURLList); + } + + /** + * Load plugins which is defined in heapstats.properties. + */ + public void loadPlugin(){ + String resourceName = "/" + this.getClass().getName().replace('.', '/') + ".class"; + String appJarString = this.getClass().getResource(resourceName).getPath(); + + pluginClassLoader = appJarString.contains("!") ? createPluginClassLoader(appJarString.substring(0, appJarString.indexOf('!')).replaceFirst("file:", "")) + : WindowController.class.getClassLoader(); + FXMLLoader.setDefaultClassLoader(pluginClassLoader); List<String> plugins = HeapStatsUtils.getPlugins();
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/utils/HeapStatsUtils.java Mon Dec 12 22:18:39 2016 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/utils/HeapStatsUtils.java Mon Dec 12 22:29:55 2016 +0900 @@ -72,7 +72,7 @@ String appJar = Stream.of(System.getProperty("java.class.path").split(System.getProperty("path.separator"))) .filter(s -> s.endsWith("heapstats-analyzer.jar")) .findFirst() - .get(); + .orElse("."); currentPath = Paths.get(appJar).toAbsolutePath().getParent(); } @@ -96,7 +96,7 @@ } /* Load resource bundle */ - resource = ResourceBundle.getBundle("HeapStatsResources", new Locale(prop.getProperty("language"))); + resource = ResourceBundle.getBundle("HeapStatsResources"); /* Validate values in properties. */ @@ -108,6 +108,9 @@ throw new HeapStatsConfigException(resource.getString("invalid.option") + " language=" + language); } + /* Load resource bundle again */ + resource = ResourceBundle.getBundle("HeapStatsResources", new Locale(prop.getProperty("language"))); + /* RankLevel */ String rankLevelStr = prop.getProperty("ranklevel"); if (rankLevelStr == null) {