You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Because of changes made to how Class.getResource(String) works in Java 9 and above, simply including the sphinx-data JAR does not work to load the English acoustic model, dictionary, etc.
The problem is here:
public static URL resourceToURL(String location) throws MalformedURLException {
Matcher jarMatcher = jarPattern.matcher(location);
if (jarMatcher.matches()) {
String resourceName = jarMatcher.group(1);
return ConfigurationManagerUtils.class.getResource(resourceName);
} else {
if (location.indexOf(58) == -1) {
location = "file:" + location;
}
return new URL(location);
}
}
Using a location such as resource:/edu/cmu/sphinx/models/en-us/en-us will no longer work. This is because Class.getResource will delegate to the classloader and pass the module name (in this case derived from the JAR file as "sphinx.core"). The problem is that the resources are in a different JAR, which gets the automatic module name "sphinx.data". Since the classloader will only look within the "sphinx.core" module, it won't find the resources from "sphinx.data."
The text was updated successfully, but these errors were encountered:
I had to copy the data files out of the JAR, repackage them in my own JAR, and extract them to the filesystem at startup. There was no simple workaround.
Because of changes made to how
Class.getResource(String)
works in Java 9 and above, simply including thesphinx-data
JAR does not work to load the English acoustic model, dictionary, etc.The problem is here:
Using a location such as
resource:/edu/cmu/sphinx/models/en-us/en-us
will no longer work. This is becauseClass.getResource
will delegate to the classloader and pass the module name (in this case derived from the JAR file as "sphinx.core"). The problem is that the resources are in a different JAR, which gets the automatic module name "sphinx.data". Since the classloader will only look within the "sphinx.core" module, it won't find the resources from "sphinx.data."The text was updated successfully, but these errors were encountered: