- add project classpath items to ProjectAssetManager as UrlLocators
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8609 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
01e7ae48b4
commit
70d600bc24
@ -68,6 +68,7 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
||||
private List<String> folderNames = new LinkedList<String>();
|
||||
private List<AssetEventListener> assetEventListeners = new LinkedList<AssetEventListener>();
|
||||
private URLClassLoader loader;
|
||||
private LinkedList<FileObject> classPathItems = new LinkedList<FileObject>();
|
||||
|
||||
public ProjectAssetManager(Project prj, String folderName) {
|
||||
super(true);
|
||||
@ -82,33 +83,7 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
||||
updateClassLoader();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void updateClassLoader() {
|
||||
Sources sources = project.getLookup().lookup(Sources.class);
|
||||
if (sources != null) {
|
||||
if (loader != null) {
|
||||
removeClassLoader(loader);
|
||||
}
|
||||
SourceGroup[] groups = sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA);
|
||||
List<URL> urls = new LinkedList<URL>();
|
||||
for (SourceGroup sourceGroup : groups) {
|
||||
ClassPath path = ClassPath.getClassPath(sourceGroup.getRootFolder(), ClassPath.EXECUTE);
|
||||
if (path != null) {
|
||||
System.out.println("Classpath: " + path);
|
||||
try {
|
||||
FileObject[] roots = path.getRoots();
|
||||
for (FileObject fileObject : roots) {
|
||||
urls.add(fileObject.getURL());
|
||||
}
|
||||
} catch (FileStateInvalidException ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), getClass().getClassLoader());
|
||||
addClassLoader(loader);
|
||||
}
|
||||
prepAssetEventListeners();
|
||||
}
|
||||
|
||||
public ProjectAssetManager(FileObject path) {
|
||||
@ -131,6 +106,47 @@ public class ProjectAssetManager extends DesktopAssetManager {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public void updateClassLoader() {
|
||||
for (FileObject fileObject : classPathItems) {
|
||||
try {
|
||||
unregisterLocator(fileObject.getURL().toExternalForm(),
|
||||
com.jme3.asset.plugins.UrlLocator.class);
|
||||
} catch (FileStateInvalidException ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
}
|
||||
}
|
||||
classPathItems.clear();
|
||||
Sources sources = project.getLookup().lookup(Sources.class);
|
||||
if (sources != null) {
|
||||
if (loader != null) {
|
||||
removeClassLoader(loader);
|
||||
}
|
||||
SourceGroup[] groups = sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA);
|
||||
List<URL> urls = new LinkedList<URL>();
|
||||
for (SourceGroup sourceGroup : groups) {
|
||||
ClassPath path = ClassPath.getClassPath(sourceGroup.getRootFolder(), ClassPath.EXECUTE);
|
||||
if (path != null) {
|
||||
try {
|
||||
FileObject[] roots = path.getRoots();
|
||||
for (FileObject fileObject : roots) {
|
||||
if(fileObject.getURL().toExternalForm().startsWith("jar")){
|
||||
Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Add classpath locator:{0}", fileObject.getURL());
|
||||
urls.add(fileObject.getURL());
|
||||
classPathItems.add(fileObject);
|
||||
registerLocator(fileObject.getURL().toExternalForm(),
|
||||
"com.jme3.asset.plugins.UrlLocator");
|
||||
}
|
||||
}
|
||||
} catch (FileStateInvalidException ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), getClass().getClassLoader());
|
||||
addClassLoader(loader);
|
||||
}
|
||||
}
|
||||
|
||||
private void prepAssetEventListeners() {
|
||||
setAssetEventListener(new AssetEventListener() {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user