Java läuft in Oracle - importierte Gläser
Ich versuche zu bekommen eine kleine java-Klasse zu laden, in Oracle 11g, so kann ich starten Sie es und rufen Sie es von PL/SQL. Ich codiert und kompiliert die Klasse auf meinem lokalen Rechner in eclipse und es kompiliert in Ordnung. Ich verpackte es in ein Glas (mit der anderen jar-Dateien es hängt davon ab, in der jar). Sie ich habe versucht, laden mein Glas in Oracle 11g. Alles lädt Sie in, leider, wenn es lädt meine benutzerdefinierte java-Klasse ist, bleibt es ungültig und wenn ich versuche zu kompilieren innerhalb der Oracle sagt, es kann nicht finden Sie Referenzen zu den Klassen (die, die ich hatte, verpackt in mein Glas mit meiner Klasse).
Ist es eine andere Art von Einstellung muss ich konfigurieren?
Hier ist, was meine benutzerdefinierten Klassen-code sieht wie folgt aus:
import com.flashline.registry.openapi.base.OpenAPIException;
import com.flashline.registry.openapi.entity.*;
import com.flashline.registry.openapi.service.v300.FlashlineRegistry;
import com.flashline.registry.openapi.service.v300.FlashlineRegistryServiceLocator;
import javax.xml.rpc.ServiceException;
import java.net.URL;
import java.rmi.RemoteException;
import org.apache.log4j.Logger;
import java.net.MalformedURLException;
public class AssetExtractor {
/**
* @param args
*/
public static void main(String[] args) {
//TODO Auto-generated method stub
}
static Logger LOG;
static AuthToken authToken = null;
static FlashlineRegistry repository = null;
static URL repoURL;
public static FlashlineRegistry getRepository()
{
if(repository == null)
try
{
try{
repoURL = new URL("https://myserver/oer/services/FlashlineRegistry");
}catch(MalformedURLException mue)
{
LOG.error(mue);
}
repository = (new FlashlineRegistryServiceLocator()).getFlashlineRegistry(repoURL);
LOG.debug((new StringBuilder()).append("Created repository at URL=").append(repoURL.toString()).toString());
}
catch(ServiceException e)
{
LOG.error(e, e);
}
return repository;
}
public static AuthToken getAuthToken()
{
if(authToken == null)
try
{
authToken = getRepository().authTokenCreate("user", "password");
LOG.debug("Created auth token.");
}
catch(OpenAPIException e)
{
LOG.error(e, e);
}
catch(RemoteException e)
{
LOG.error(e, e);
}
else
try
{
getRepository().authTokenValidate(authToken);
}
catch(OpenAPIException e)
{
LOG.info("Auth token was invalid. Recreating auth token");
authToken = null;
return getAuthToken();
}
catch(RemoteException re)
{
LOG.error("Remote exception occured during creation of suth token after determined to be invalid", re);
re.printStackTrace();
authToken = null;
}
return authToken;
}
public static String getAssetXML(String strAssetID)
{
String strAsset = null;
try
{
strAsset = getRepository().assetReadXml(getAuthToken(), Long.parseLong(strAssetID));
}
catch(OpenAPIException e)
{
e.printStackTrace();
}
catch(RemoteException e)
{
e.printStackTrace();
}
return strAsset;
}
}
Und alle *.jar-Dateien für die Importe sind in meinem AssetExtractor.jar
Den Befehl habe ich mit laden Sie das Glas in oracle:
loadjava -v -f -resolve -resolver "((* OER) (* PUBLIC))" -user oer/***** AssetExtractor.jar
Irgendwelche Ideen wäre hilfreich!!!
- Und ich habe bereits versucht die Einstellung der classpath in meiner OS, wo meine DB ist, sah ich auch in eine manuelle Einstellung der classpath in der extproc.ora-Datei und so hab ich auch versucht. So weit keiner von Ihnen arbeitete.
Du musst angemeldet sein, um einen Kommentar abzugeben.
So scheint es, dass wenn ich den folgenden Code es löst fast alle meine Probleme:
Bearbeiten der Oracle-Benutzer' .Profil EINSTELLEN und EXPORT CLASSPATH, PATH, LD_LIBRARY_PATH, ORACLE_HOME, Umgebungsvariable JAVA_HOME mit dem richtigen Wege
SQLPlus als sys als sysdba
OS Kommandozeile als oracle-Benutzer:
SQLPlus OER als Benutzer
Die einzige noch ausstehende Frage ist, dass aus irgendeinem Grund kann es noch nicht lokalisieren/beheben einige der Oracle-OER-Klassen (die sollten sich alle in der client.rex*.jar, ich öffnete und sah Sie dort. Wenn ich dieses Problem lösen, dann bin ich gut zu gehen.