ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> tcljava-user
tcljava-user
[tcljava-user] Java loader failed to load the class
by Will Zapar other posts by this author
Apr 18 2006 1:05PM messages near this date
| Re: [tcljava-user] Java loader failed to load the class
Mo,

Question?
 
I am trying to load a class file in TCL and I am having a problem.
 
Here is a snip of my code I am working on:
 
#!/usr/bin/expect --
source /home/server/module/startup.tcl
 
if {0} { # this is not needed fo package require, is it needed for
import?
 
}
 
#set env(LD_LIBRARY_PATH)
{/usr/java/jdk1.5.0_06/jre/lib/i386:/usr/java/jdk1.5.0_06/jre/lib/i386/c
lient:/usr/java/jdk1.5.0_06/jre/lib/i386/native_threads:/usr/local/lib/t
cljava1.3.2:/opt/tclBlend1.3.2/unix:}
 
set env(LD_LIBRARY_PATH) {/usr/local/lib/tcljava1.3.2:/opt/local/lib/:};
# only this one needed so far
 
### need both of these for package require java to load
lappend auto_path "/opt/tclBlend1.3.2/"; # end slash doesn't matter
lappend auto_path "/opt/tclBlend1.3.2/src/xputils/"; # end slash doesn't
matter
 
puts "java package ver = [package require java]";
 
puts "java system version = [java::call System getProperty
"java.version"]";
 
set err [java::field System err]; $err {println String} "Java in TCL is
working!"; # this shows java working
 
set env(CLASSPATH)
"$env(TCL_CLASSPATH):/opt/BACCTools/lib/bpr.jar:/opt/BACCTools/lib/suite
.jar:/opt/BACCTools/lib/bcprov-jdk14-116.jar:/opt/BACCTools/lib/commons-
codec-1.3.jar:/opt/BACCTools/lib/commons-httpclient-3.0-rc2.jar:/opt/BAC
CTools/lib/commons-logging.jar:/opt/BACCTools/lib/dom.jar:/opt/BACCTools
/lib/org.mortbay.jetty.jar:/opt/BACCTools/lib/saaj-api.jar:/opt/BACCTool
s/lib/saaj-impl.jar:/opt/BACCTools/lib/xalan.jar:/opt/BACCTools/lib/xerc
esImpl.jar";
 
#set env(TCL_CLASSPATH)
{/usr/local/lib/tcljava1.3.2/tcljava.jar:/usr/local/lib/tcljava1.3.2/tcl
blend.jar:/usr/java/jdk1.5.0_06/jre/lib/rt.jar}
 
### this is for bpr.jar and suite.jar only in /opt/BACCTools/lib/
set env(TCL_CLASSPATH)
"/opt/BACCTools/lib/bprjar/com/cisco/provisioning/cpe:/usr/local/lib/tcl
java1.3.2/tcljava.jar:/usr/local/lib/tcljava1.3.2/tclblend.jar:/usr/java
/jdk1.5.0_06/jre/lib/rt.jar";
 
### this is for all jar files in /opt/BACCTools/lib/
 
#set env(TCL_CLASSPATH)
"$env(TCL_CLASSPATH):/opt/BACCTools/lib/bpr.jar:/opt/BACCTools/lib/suite
.jar:/opt/BACCTools/lib/bcprov-jdk14-116.jar:/opt/BACCTools/lib/commons-
codec-1.3.jar:/opt/BACCTools/lib/commons-httpclient-3.0-rc2.jar:/opt/BAC
CTools/lib/commons-logging.jar:/opt/BACCTools/lib/dom.jar:/opt/BACCTools
/lib/org.mortbay.jetty.jar:/opt/BACCTools/lib/saaj-api.jar:/opt/BACCTool
s/lib/saaj-impl.jar:/opt/BACCTools/lib/xalan.jar:/opt/BACCTools/lib/xerc
esImpl.jar";
 
arrArrayDump env 0; # dump the environment variables
 
#[ 
#proc loadClass {classfile} { 
#   set file [open $classfile r] 
#   fconfigure $file -translation binary -encoding binary 
#   set data [read $file] 
#   return [java::defineclass $data] 
#} 
#set class [loadClass
"/opt/BACCTools/lib/bprjar/com/cisco/provisioning/cpe/PACEConnectionFact
ory.class"] 
#SET nothing [set myclass [java::new PACEConnectionFactory]] 
#]
 
#java::load -classpath /opt/BACCTools/lib/ com;
#java::load -classpath /opt/BACCTools/lib/ com.cisco;
#java::load -classpath /opt/BACCTools/lib/ com.cisco.provisioning;
#java::load -classpath /opt/BACCTools/lib/ com.cisco.provisioning.cpe;
#java::load -classpath /opt/BACCTools/lib/
com.cisco.provisioning.cpe.PACEConnectionFactory;
java::load -classpath
/opt/BACCTools/lib/bprjar/com/cisco/provisioning/cpe/
java.lang.Object.com.cisco.provisioning.cpe.PACEConnectionFactory.class;
 
java::import com.cisco.provisioning.cpe.PACEConnectionFactory; #
java::import
java.lang.object.com.cisco.provisioning.cpe.PACEConnectionFactory; #
java::import
java.lang.Object.com.cisco.provisioning.cpe.PACEConnectionFactory; #
 
### imports (both BACC and Java) try two different ways, neither works
#set jstr [java::import com.cisco.provisioning.cpe.*]; puts "jstr =
$jstr";
#java::import com.cisco.provisioning.cpe.*;
#java::import com.cisco.provisioning.cpe.api.*;
#java::import com.cisco.provisioning.cpe.constants.*;
 
# build tcl classpath
 
append x /opt/BACCTools/lib/bpr.jar;
 
set env(TCL_CLASSPATH) $x
 
puts "\nTCL_CLASSPATH = [ array get env TCL_CLASSPATH ]\n"
 
#set bacc [java::call
java.lang.Object.com.cisco.provisioning.cpe.PACEConnectionFactory.getIns
tance(172.24.195.164, 49187, admin, f0ssil)]; puts "bacc = $bacc"
#set bacc [java::call
com.cisco.provisioning.cpe.PACEConnectionFactory.getInstance(172.24.195.
164, 49187, admin, f0ssil)]; puts "bacc = $bacc";
 
if {0} { # this doesn't use anything but java.lang in TCL
 
 ### both methods work (so java.lang.String must already be imported -> 
yes by default all of java.lang)
 set jstr [java::new java.lang.String "Long Name Java String"]; puts
"jstr = $jstr"; # this creates a new java string object
 set tstr [$jstr toString]; puts "tstr = $tstr"; # convert to tcl string
using method toString
 set jstr [java::new String "Short Name Java String"]; puts "jstr =
$jstr"; # this creates a new java string object
 set tstr [$jstr toString]; puts "tstr = $tstr"; # convert to tcl string
using method toString
 
 ### info on object and class
 puts "methods = [java::info methods $jstr]"; # get info on the java
class
 puts "baseclass = [java::info baseclass String]"; # get info on the
java class
 puts "constructors = [java::info constructors String]"; # get info on
the java class
 puts "events = [java::info events String]"; # get info on the java
class
 puts "fields = [java::info fields String]"; # get info on the java
class
 puts "properties = [java::info properties String]"; # get info on the
java class
 puts "superclass = [java::info superclass String]"; # get info on the
java class
 
 ### this works to dump static fields from a class
 #foreach f [java::info fields -static java.util.Calendar] {puts "$f =
[java::field java.util.Calendar $f]"}
}
##### End of File #####
 
Here is the error I am getting:
 
-bash-2.05b$ ./tcljava.tcl 
java package ver = 1.3.2
java system version = 1.5.0_06
Java in TCL is working!
load
"java.lang.Object.com.cisco.provisioning.cpe.PACEConnectionFactory.class
" failed: java.lang.SecurityException: Java loader failed to load the
class and the Tcl Java loader is not permitted to load classes in the
tcl or java package at runtime, check your CLASSPATH.
    while executing
"java::load -classpath
/opt/BACCTools/lib/bprjar/com/cisco/provisioning/cpe/
java.lang.Object.com.cisco.provisioning.cpe.PACEConnectionFactory.class"
    (file "./tcljava.tcl" line 54)
 
Any ideas?
 
Regards,
 
Will
 
Thread:
Will Zapar
Mo DeJong
Will Zapar

Privacy Policy | Email Opt-out | Feedback | Syndication
© 2004 ActiveState, a division of Sophos All rights reserved