From: <php...@li...> - 2011-01-14 15:28:45
|
Hi, Quick bit of support with running what I'm pretty sure is a correctly installed Tomcat 7.0.5 and PHP-JavaBridge installation environment. I am running on Mac OS X 10.6.6, using MAMP (PHP 5.3, Apache 2.0 on port 80 etc) and have Tomcat 7.0.5 (port 8080) installed. I can run any php code successfully, the Tomcat examples all run successfully and if I deploy JavaBridge.war, copy the JavaBridge directory over to my local htdocs root (as per installation instructions if you get the FASTCGI error) then I can also run all the JavaBridge examples successfully. So a vanilla install is looking good. I can run the following code php script from my htdocs local root and it works fine as an example: <?php require_once("http://localhost:8080/JavaBridge/java/Java.inc"); $i1 = new Java("java.math.BigInteger", "1"); $i2 = new Java("java.math.BigInteger", "2"); $i3 = $i1->add($i2); echo $i3->toString() . "\n"; ?> So I now move onto wanting to instantiate classes from my own jar file called SolverSDK.jar. As per the installation instructions, I grabbed a copy of JavaBridge.war, exploded it, add in my jar file to the WEB-INF/lib directory, re-create the war file using "jar -cvf JavaBridge.war *", un-deploy the existing JavaBridge app in Tomcat, copy in my new one and re-start Tomcat. The updated war file deploys fine and I can run the above sample script again all ok. However, when I try to run the below simple script: <?php require_once("http://localhost:8080/JavaBridge/java/Java.inc"); $problem = new Java("SolverPlatform.Problem"); ?> I get the following error: Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new SolverPlatform.Problem. Cause: java.lang.UnsatisfiedLinkError: no SolverSDK in java.library.path VM: 1.6.0_22@http://www.apple.com/" at: #-36 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1754) #-35 java.lang.Runtime.loadLibrary0(Runtime.java:823) #-34 java.lang.System.loadLibrary(System.java:1045) #-33 SolverPlatform.Problem.(Unknown Source) #-32 java.lang.Class.forName0(Native Method) #-31 java.lang.Class.forName(Class.java:247) #-30 php.java.bridge.Util.classForName(Util.java:1518) #-29 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-28 php.java.bridge.Request.handleRequest(Request.java:458) #-27 php.java.bridge.Request.handleOneRequest(Request.java:510) #-26 php.java.servlet.PhpJavaServlet.handleLocalConnection(PhpJavaServlet.java:202) #-25 php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:250) #-24 php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:261) #-23 javax.servlet.http.HttpServl in http://localhost:8080/JavaBridge/java/Java.inc on line 195 A browser refresh then results in the good old ClassNotFound error due since I would assume to the need for only one class-loader. The SolverSDK.jar file has the correct layout when exploded, i.e. SolverPlatform directory and then all the classes etc. It relies on a file called "libSolverSDK.dylib" which is also included within the updated war file in the same directory. I have tried everything I can think of, including forcing the classpath in the Tomcat config file, setenv.sh etc. I have even ensured that DYLD_LIBRARY_PATH is set in a desperate attempt though I know this should have no effect within Tomcat. I am pretty familiar with Java and PHP but for the life of me, I can see no reason why I am getting this simple error. I have, as per the video demo on the site, even tried using the classes rather than the jar itself, in a newly created directory WEB-INF/classes but again after redeploying, I get the same error. I have trawled through the mailing list archive and the web but not got anywhere. Any help would be greatly appreciated. Regards, Marc The information contained in this E-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this E-mail. Such unauthorised use may be unlawful. If you have received this E-mail in error, please inform us immediately and delete it and all copies from your system. |
From: <php...@li...> - 2011-01-14 16:30:23
|
Hello, i dont know solversdk, so my infos may not be 100% correct. I think, if you want to instantiate a java class in php you will have to use the fully qualified class name like this: <?php require_once("http://localhost:8080/JavaBridge/java/Java.inc"); $problem = new Java("com.solver.Problem"); ?> This would instantiate the class Problem from the package com.solver. But of course i dont know if this is the correct package name, because i dont know solversdk. Maybe a stupid question: Do you know how to find out the package name of a java class? If you unpack the solversdk look for the file Problem.class. The package name would be the directories from the root of the jar contents to this file. In the above example it would look like this: <jar-root>/com/solver/Problem.class David On Fri, Jan 14, 2011 at 4:28 PM, < php...@li...> wrote: > Hi, > > Quick bit of support with running what I'm pretty sure is a correctly > installed Tomcat 7.0.5 and PHP-JavaBridge installation environment. I am > running on Mac OS X 10.6.6, using MAMP (PHP 5.3, Apache 2.0 on port 80 etc) > and have Tomcat 7.0.5 (port 8080) installed. I can run any php code > successfully, the Tomcat examples all run successfully and if I deploy > JavaBridge.war, copy the JavaBridge directory over to my local htdocs root > (as per installation instructions if you get the FASTCGI error) then I can > also run all the JavaBridge examples successfully. So a vanilla install is > looking good. I can run the following code php script from my htdocs local > root and it works fine as an example: > > <?php > require_once("http://localhost:8080/JavaBridge/java/Java.inc"); > $i1 = new Java("java.math.BigInteger", "1"); > $i2 = new Java("java.math.BigInteger", "2"); > $i3 = $i1->add($i2); > echo $i3->toString() . "\n"; > ?> > > So I now move onto wanting to instantiate classes from my own jar file > called SolverSDK.jar. As per the installation instructions, I grabbed a copy > of JavaBridge.war, exploded it, add in my jar file to the WEB-INF/lib > directory, re-create the war file using "jar -cvf JavaBridge.war *", > un-deploy the existing JavaBridge app in Tomcat, copy in my new one and > re-start Tomcat. The updated war file deploys fine and I can run the above > sample script again all ok. However, when I try to run the below simple > script: > > <?php > require_once("http://localhost:8080/JavaBridge/java/Java.inc"); > $problem = new Java("SolverPlatform.Problem"); > ?> > > I get the following error: > > Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance > failed: new SolverPlatform.Problem. Cause: java.lang.UnsatisfiedLinkError: > no SolverSDK in java.library.path VM: 1.6.0_22@http://www.apple.com/" at: > #-36 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1754) #-35 > java.lang.Runtime.loadLibrary0(Runtime.java:823) #-34 > java.lang.System.loadLibrary(System.java:1045) #-33 > SolverPlatform.Problem.(Unknown Source) #-32 java.lang.Class.forName0(Native > Method) #-31 java.lang.Class.forName(Class.java:247) #-30 > php.java.bridge.Util.classForName(Util.java:1518) #-29 > php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-28 > php.java.bridge.Request.handleRequest(Request.java:458) #-27 > php.java.bridge.Request.handleOneRequest(Request.java:510) #-26 > php.java.servlet.PhpJavaServlet.handleLocalConnection(PhpJavaServlet.java:202) > #-25 php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:250) #-24 > php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:261) #-23 > javax.servlet.http.HttpServl in > http://localhost:8080/JavaBridge/java/Java.inc on line 195 > > A browser refresh then results in the good old ClassNotFound error due > since I would assume to the need for only one class-loader. > > The SolverSDK.jar file has the correct layout when exploded, i.e. > SolverPlatform directory and then all the classes etc. It relies on a file > called "libSolverSDK.dylib" which is also included within the updated war > file in the same directory. I have tried everything I can think of, > including forcing the classpath in the Tomcat config file, setenv.sh etc. I > have even ensured that DYLD_LIBRARY_PATH is set in a desperate attempt > though I know this should have no effect within Tomcat. I am pretty familiar > with Java and PHP but for the life of me, I can see no reason why I am > getting this simple error. I have, as per the video demo on the site, even > tried using the classes rather than the jar itself, in a newly created > directory WEB-INF/classes but again after redeploying, I get the same error. > > I have trawled through the mailing list archive and the web but not got > anywhere. Any help would be greatly appreciated. > > Regards, > > Marc > > The information contained in this E-mail is confidential. It is intended > only for the stated addressee(s) and access to it by any other person is > unauthorised. If you are not an addressee, you must not disclose, copy, > circulate or in any other way use or rely on the information contained in > this E-mail. Such unauthorised use may be unlawful. If you have received > this E-mail in error, please inform us immediately and delete it and all > copies from your system. > > > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > php-java-bridge-users mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users > |
From: <php...@li...> - 2011-01-14 16:38:26
|
Hi David, Yes, sorry, my original email was not 100% clear on the layout of the jar file - SolverSDK.jar file unpacks to a directory "SolverPlatform" and then all the classes underneath including Problem.class, hence the call of just "SolverPlatform.Problem". I can create a simple java file and instantiate the class at the command line in the same WEB-INF/Lib directory so it must be something with trying the same via the JavaBridge. Thanks, Marc On 14 Jan 2011, at 16:30, php...@li... wrote: > Hello, > > i dont know solversdk, so my infos may not be 100% correct. > > I think, if you want to instantiate a java class in php you will have to use > the fully qualified class name like this: > > <?php > require_once("http://localhost:8080/JavaBridge/java/Java.inc"); > $problem = new Java("com.solver.Problem"); > ?> > > This would instantiate the class Problem from the package com.solver. > But of course i dont know if this is the correct package name, because i > dont know solversdk. > > Maybe a stupid question: Do you know how to find out the package name of a > java class? > If you unpack the solversdk look for the file Problem.class. The package > name would be the > directories from the root of the jar contents to this file. In the above > example it would look > like this: > <jar-root>/com/solver/Problem.class > > David > > > On Fri, Jan 14, 2011 at 4:28 PM, < > php...@li...> wrote: > >> Hi, >> >> Quick bit of support with running what I'm pretty sure is a correctly >> installed Tomcat 7.0.5 and PHP-JavaBridge installation environment. I am >> running on Mac OS X 10.6.6, using MAMP (PHP 5.3, Apache 2.0 on port 80 etc) >> and have Tomcat 7.0.5 (port 8080) installed. I can run any php code >> successfully, the Tomcat examples all run successfully and if I deploy >> JavaBridge.war, copy the JavaBridge directory over to my local htdocs root >> (as per installation instructions if you get the FASTCGI error) then I can >> also run all the JavaBridge examples successfully. So a vanilla install is >> looking good. I can run the following code php script from my htdocs local >> root and it works fine as an example: >> >> <?php >> require_once("http://localhost:8080/JavaBridge/java/Java.inc"); >> $i1 = new Java("java.math.BigInteger", "1"); >> $i2 = new Java("java.math.BigInteger", "2"); >> $i3 = $i1->add($i2); >> echo $i3->toString() . "\n"; >> ?> >> >> So I now move onto wanting to instantiate classes from my own jar file >> called SolverSDK.jar. As per the installation instructions, I grabbed a copy >> of JavaBridge.war, exploded it, add in my jar file to the WEB-INF/lib >> directory, re-create the war file using "jar -cvf JavaBridge.war *", >> un-deploy the existing JavaBridge app in Tomcat, copy in my new one and >> re-start Tomcat. The updated war file deploys fine and I can run the above >> sample script again all ok. However, when I try to run the below simple >> script: >> >> <?php >> require_once("http://localhost:8080/JavaBridge/java/Java.inc"); >> $problem = new Java("SolverPlatform.Problem"); >> ?> >> >> I get the following error: >> >> Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance >> failed: new SolverPlatform.Problem. Cause: java.lang.UnsatisfiedLinkError: >> no SolverSDK in java.library.path VM: 1.6.0_22@http://www.apple.com/" at: >> #-36 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1754) #-35 >> java.lang.Runtime.loadLibrary0(Runtime.java:823) #-34 >> java.lang.System.loadLibrary(System.java:1045) #-33 >> SolverPlatform.Problem.(Unknown Source) #-32 java.lang.Class.forName0(Native >> Method) #-31 java.lang.Class.forName(Class.java:247) #-30 >> php.java.bridge.Util.classForName(Util.java:1518) #-29 >> php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-28 >> php.java.bridge.Request.handleRequest(Request.java:458) #-27 >> php.java.bridge.Request.handleOneRequest(Request.java:510) #-26 >> php.java.servlet.PhpJavaServlet.handleLocalConnection(PhpJavaServlet.java:202) >> #-25 php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:250) #-24 >> php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:261) #-23 >> javax.servlet.http.HttpServl in >> http://localhost:8080/JavaBridge/java/Java.inc on line 195 >> >> A browser refresh then results in the good old ClassNotFound error due >> since I would assume to the need for only one class-loader. >> >> The SolverSDK.jar file has the correct layout when exploded, i.e. >> SolverPlatform directory and then all the classes etc. It relies on a file >> called "libSolverSDK.dylib" which is also included within the updated war >> file in the same directory. I have tried everything I can think of, >> including forcing the classpath in the Tomcat config file, setenv.sh etc. I >> have even ensured that DYLD_LIBRARY_PATH is set in a desperate attempt >> though I know this should have no effect within Tomcat. I am pretty familiar >> with Java and PHP but for the life of me, I can see no reason why I am >> getting this simple error. I have, as per the video demo on the site, even >> tried using the classes rather than the jar itself, in a newly created >> directory WEB-INF/classes but again after redeploying, I get the same error. >> >> I have trawled through the mailing list archive and the web but not got >> anywhere. Any help would be greatly appreciated. >> >> Regards, >> >> Marc >> >> The information contained in this E-mail is confidential. It is intended >> only for the stated addressee(s) and access to it by any other person is >> unauthorised. If you are not an addressee, you must not disclose, copy, >> circulate or in any other way use or rely on the information contained in >> this E-mail. Such unauthorised use may be unlawful. If you have received >> this E-mail in error, please inform us immediately and delete it and all >> copies from your system. >> >> >> ------------------------------------------------------------------------------ >> Protect Your Site and Customers from Malware Attacks >> Learn about various malware tactics and how to avoid them. Understand >> malware threats, the impact they can have on your business, and how you >> can protect your company and customers by using code signing. >> http://p.sf.net/sfu/oracle-sfdevnl >> _______________________________________________ >> php-java-bridge-users mailing list >> php...@li... >> https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users >> > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > php-java-bridge-users mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users Mob: +44 797 329 5617 The information contained in this E-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this E-mail. Such unauthorised use may be unlawful. If you have received this E-mail in error, please inform us immediately and delete it and all copies from your system. |
From: <php...@li...> - 2011-01-14 18:18:02
|
Hi, Don't worry, I've solved it now. Running the JavaBridge example called Test Installation once again and scrolling down to the Java vars at the very bottom, I noticed the Java Library Path was different and by placing a copy of my dylib file in there, it all now works wonderfully. Thanks again, Marc On 14 Jan 2011, at 16:38, php...@li... wrote: > Hi David, > > Yes, sorry, my original email was not 100% clear on the layout of the jar file - SolverSDK.jar file unpacks to a directory "SolverPlatform" and then all the classes underneath including Problem.class, hence the call of just "SolverPlatform.Problem". I can create a simple java file and instantiate the class at the command line in the same WEB-INF/Lib directory so it must be something with trying the same via the JavaBridge. > > Thanks, > > Marc > > On 14 Jan 2011, at 16:30, php...@li... wrote: > >> Hello, >> >> i dont know solversdk, so my infos may not be 100% correct. >> >> I think, if you want to instantiate a java class in php you will have to use >> the fully qualified class name like this: >> >> <?php >> require_once("http://localhost:8080/JavaBridge/java/Java.inc"); >> $problem = new Java("com.solver.Problem"); >> ?> >> >> This would instantiate the class Problem from the package com.solver. >> But of course i dont know if this is the correct package name, because i >> dont know solversdk. >> >> Maybe a stupid question: Do you know how to find out the package name of a >> java class? >> If you unpack the solversdk look for the file Problem.class. The package >> name would be the >> directories from the root of the jar contents to this file. In the above >> example it would look >> like this: >> <jar-root>/com/solver/Problem.class >> >> David >> >> >> On Fri, Jan 14, 2011 at 4:28 PM, < >> php...@li...> wrote: >> >>> Hi, >>> >>> Quick bit of support with running what I'm pretty sure is a correctly >>> installed Tomcat 7.0.5 and PHP-JavaBridge installation environment. I am >>> running on Mac OS X 10.6.6, using MAMP (PHP 5.3, Apache 2.0 on port 80 etc) >>> and have Tomcat 7.0.5 (port 8080) installed. I can run any php code >>> successfully, the Tomcat examples all run successfully and if I deploy >>> JavaBridge.war, copy the JavaBridge directory over to my local htdocs root >>> (as per installation instructions if you get the FASTCGI error) then I can >>> also run all the JavaBridge examples successfully. So a vanilla install is >>> looking good. I can run the following code php script from my htdocs local >>> root and it works fine as an example: >>> >>> <?php >>> require_once("http://localhost:8080/JavaBridge/java/Java.inc"); >>> $i1 = new Java("java.math.BigInteger", "1"); >>> $i2 = new Java("java.math.BigInteger", "2"); >>> $i3 = $i1->add($i2); >>> echo $i3->toString() . "\n"; >>> ?> >>> >>> So I now move onto wanting to instantiate classes from my own jar file >>> called SolverSDK.jar. As per the installation instructions, I grabbed a copy >>> of JavaBridge.war, exploded it, add in my jar file to the WEB-INF/lib >>> directory, re-create the war file using "jar -cvf JavaBridge.war *", >>> un-deploy the existing JavaBridge app in Tomcat, copy in my new one and >>> re-start Tomcat. The updated war file deploys fine and I can run the above >>> sample script again all ok. However, when I try to run the below simple >>> script: >>> >>> <?php >>> require_once("http://localhost:8080/JavaBridge/java/Java.inc"); >>> $problem = new Java("SolverPlatform.Problem"); >>> ?> >>> >>> I get the following error: >>> >>> Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance >>> failed: new SolverPlatform.Problem. Cause: java.lang.UnsatisfiedLinkError: >>> no SolverSDK in java.library.path VM: 1.6.0_22@http://www.apple.com/" at: >>> #-36 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1754) #-35 >>> java.lang.Runtime.loadLibrary0(Runtime.java:823) #-34 >>> java.lang.System.loadLibrary(System.java:1045) #-33 >>> SolverPlatform.Problem.(Unknown Source) #-32 java.lang.Class.forName0(Native >>> Method) #-31 java.lang.Class.forName(Class.java:247) #-30 >>> php.java.bridge.Util.classForName(Util.java:1518) #-29 >>> php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-28 >>> php.java.bridge.Request.handleRequest(Request.java:458) #-27 >>> php.java.bridge.Request.handleOneRequest(Request.java:510) #-26 >>> php.java.servlet.PhpJavaServlet.handleLocalConnection(PhpJavaServlet.java:202) >>> #-25 php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:250) #-24 >>> php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:261) #-23 >>> javax.servlet.http.HttpServl in >>> http://localhost:8080/JavaBridge/java/Java.inc on line 195 >>> >>> A browser refresh then results in the good old ClassNotFound error due >>> since I would assume to the need for only one class-loader. >>> >>> The SolverSDK.jar file has the correct layout when exploded, i.e. >>> SolverPlatform directory and then all the classes etc. It relies on a file >>> called "libSolverSDK.dylib" which is also included within the updated war >>> file in the same directory. I have tried everything I can think of, >>> including forcing the classpath in the Tomcat config file, setenv.sh etc. I >>> have even ensured that DYLD_LIBRARY_PATH is set in a desperate attempt >>> though I know this should have no effect within Tomcat. I am pretty familiar >>> with Java and PHP but for the life of me, I can see no reason why I am >>> getting this simple error. I have, as per the video demo on the site, even >>> tried using the classes rather than the jar itself, in a newly created >>> directory WEB-INF/classes but again after redeploying, I get the same error. >>> >>> I have trawled through the mailing list archive and the web but not got >>> anywhere. Any help would be greatly appreciated. >>> >>> Regards, >>> >>> Marc >>> >>> The information contained in this E-mail is confidential. It is intended >>> only for the stated addressee(s) and access to it by any other person is >>> unauthorised. If you are not an addressee, you must not disclose, copy, >>> circulate or in any other way use or rely on the information contained in >>> this E-mail. Such unauthorised use may be unlawful. If you have received >>> this E-mail in error, please inform us immediately and delete it and all >>> copies from your system. >>> >>> >>> ------------------------------------------------------------------------------ >>> Protect Your Site and Customers from Malware Attacks >>> Learn about various malware tactics and how to avoid them. Understand >>> malware threats, the impact they can have on your business, and how you >>> can protect your company and customers by using code signing. >>> http://p.sf.net/sfu/oracle-sfdevnl >>> _______________________________________________ >>> php-java-bridge-users mailing list >>> php...@li... >>> https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users >>> >> ------------------------------------------------------------------------------ >> Protect Your Site and Customers from Malware Attacks >> Learn about various malware tactics and how to avoid them. Understand >> malware threats, the impact they can have on your business, and how you >> can protect your company and customers by using code signing. >> http://p.sf.net/sfu/oracle-sfdevnl >> _______________________________________________ >> php-java-bridge-users mailing list >> php...@li... >> https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users > > > Mob: +44 797 329 5617 > > The information contained in this E-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this E-mail. Such unauthorised use may be unlawful. If you have received this E-mail in error, please inform us immediately and delete it and all copies from your system. > > > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > php-java-bridge-users mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users Mob: +44 797 329 5617 The information contained in this E-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this E-mail. Such unauthorised use may be unlawful. If you have received this E-mail in error, please inform us immediately and delete it and all copies from your system. |
From: <php...@li...> - 2011-01-14 18:40:55
|
Hello Marc, i have another idea. Look at your error message: Fatal error: Uncaught [[o:Exception]:"java.lang. Exception: CreateInstance failed: new SolverPlatform.Problem. Cause: java.lang.UnsatisfiedLinkError: no SolverSDK in java.library.path Maybe the solversdk depends on a native library which you have to put on the library path. No, when i follow down the stacktrace it is obvious that your php code triggered the java runtime to load a native dynamic library (*.dll or *.so). (Use the *.dll files on windows and the *.so files on Linux.) Ok, so your php-java-bridge setup is actually fine and also your php script works correct. Now you must find out which library the solversdk depends on and put it in a folder which is on your library path. I have never used a native library from a web application (war-file). But this should give you some hints where to put the files: http://wiki.apache.org/tomcat/HowTo#I.27m_encountering_classloader_problems_when_using_JNI_under_Tomcat Then restart tomcat. David On Fri, Jan 14, 2011 at 5:38 PM, < php...@li...> wrote: > Hi David, > > Yes, sorry, my original email was not 100% clear on the layout of the jar > file - SolverSDK.jar file unpacks to a directory "SolverPlatform" and then > all the classes underneath including Problem.class, hence the call of just > "SolverPlatform.Problem". I can create a simple java file and instantiate > the class at the command line in the same WEB-INF/Lib directory so it must > be something with trying the same via the JavaBridge. > > Thanks, > > Marc > > On 14 Jan 2011, at 16:30, php...@li...wrote: > > > Hello, > > > > i dont know solversdk, so my infos may not be 100% correct. > > > > I think, if you want to instantiate a java class in php you will have to > use > > the fully qualified class name like this: > > > > <?php > > require_once("http://localhost:8080/JavaBridge/java/Java.inc"); > > $problem = new Java("com.solver.Problem"); > > ?> > > > > This would instantiate the class Problem from the package com.solver. > > But of course i dont know if this is the correct package name, because i > > dont know solversdk. > > > > Maybe a stupid question: Do you know how to find out the package name of > a > > java class? > > If you unpack the solversdk look for the file Problem.class. The package > > name would be the > > directories from the root of the jar contents to this file. In the above > > example it would look > > like this: > > <jar-root>/com/solver/Problem.class > > > > David > > > > > > On Fri, Jan 14, 2011 at 4:28 PM, < > > php...@li...> wrote: > > > >> Hi, > >> > >> Quick bit of support with running what I'm pretty sure is a correctly > >> installed Tomcat 7.0.5 and PHP-JavaBridge installation environment. I am > >> running on Mac OS X 10.6.6, using MAMP (PHP 5.3, Apache 2.0 on port 80 > etc) > >> and have Tomcat 7.0.5 (port 8080) installed. I can run any php code > >> successfully, the Tomcat examples all run successfully and if I deploy > >> JavaBridge.war, copy the JavaBridge directory over to my local htdocs > root > >> (as per installation instructions if you get the FASTCGI error) then I > can > >> also run all the JavaBridge examples successfully. So a vanilla install > is > >> looking good. I can run the following code php script from my htdocs > local > >> root and it works fine as an example: > >> > >> <?php > >> require_once("http://localhost:8080/JavaBridge/java/Java.inc"); > >> $i1 = new Java("java.math.BigInteger", "1"); > >> $i2 = new Java("java.math.BigInteger", "2"); > >> $i3 = $i1->add($i2); > >> echo $i3->toString() . "\n"; > >> ?> > >> > >> So I now move onto wanting to instantiate classes from my own jar file > >> called SolverSDK.jar. As per the installation instructions, I grabbed a > copy > >> of JavaBridge.war, exploded it, add in my jar file to the WEB-INF/lib > >> directory, re-create the war file using "jar -cvf JavaBridge.war *", > >> un-deploy the existing JavaBridge app in Tomcat, copy in my new one and > >> re-start Tomcat. The updated war file deploys fine and I can run the > above > >> sample script again all ok. However, when I try to run the below simple > >> script: > >> > >> <?php > >> require_once("http://localhost:8080/JavaBridge/java/Java.inc"); > >> $problem = new Java("SolverPlatform.Problem"); > >> ?> > >> > >> I get the following error: > >> > >> Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: > CreateInstance > >> failed: new SolverPlatform.Problem. Cause: > java.lang.UnsatisfiedLinkError: > >> no SolverSDK in java.library.path VM: 1.6.0_22@http://www.apple.com/" > at: > >> #-36 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1754) #-35 > >> java.lang.Runtime.loadLibrary0(Runtime.java:823) #-34 > >> java.lang.System.loadLibrary(System.java:1045) #-33 > >> SolverPlatform.Problem.(Unknown Source) #-32 > java.lang.Class.forName0(Native > >> Method) #-31 java.lang.Class.forName(Class.java:247) #-30 > >> php.java.bridge.Util.classForName(Util.java:1518) #-29 > >> php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-28 > >> php.java.bridge.Request.handleRequest(Request.java:458) #-27 > >> php.java.bridge.Request.handleOneRequest(Request.java:510) #-26 > >> > php.java.servlet.PhpJavaServlet.handleLocalConnection(PhpJavaServlet.java:202) > >> #-25 php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:250) > #-24 > >> php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:261) #-23 > >> javax.servlet.http.HttpServl in > >> http://localhost:8080/JavaBridge/java/Java.inc on line 195 > >> > >> A browser refresh then results in the good old ClassNotFound error due > >> since I would assume to the need for only one class-loader. > >> > >> The SolverSDK.jar file has the correct layout when exploded, i.e. > >> SolverPlatform directory and then all the classes etc. It relies on a > file > >> called "libSolverSDK.dylib" which is also included within the updated > war > >> file in the same directory. I have tried everything I can think of, > >> including forcing the classpath in the Tomcat config file, setenv.sh > etc. I > >> have even ensured that DYLD_LIBRARY_PATH is set in a desperate attempt > >> though I know this should have no effect within Tomcat. I am pretty > familiar > >> with Java and PHP but for the life of me, I can see no reason why I am > >> getting this simple error. I have, as per the video demo on the site, > even > >> tried using the classes rather than the jar itself, in a newly created > >> directory WEB-INF/classes but again after redeploying, I get the same > error. > >> > >> I have trawled through the mailing list archive and the web but not got > >> anywhere. Any help would be greatly appreciated. > >> > >> Regards, > >> > >> Marc > >> > >> The information contained in this E-mail is confidential. It is intended > >> only for the stated addressee(s) and access to it by any other person is > >> unauthorised. If you are not an addressee, you must not disclose, copy, > >> circulate or in any other way use or rely on the information contained > in > >> this E-mail. Such unauthorised use may be unlawful. If you have received > >> this E-mail in error, please inform us immediately and delete it and all > >> copies from your system. > >> > >> > >> > ------------------------------------------------------------------------------ > >> Protect Your Site and Customers from Malware Attacks > >> Learn about various malware tactics and how to avoid them. Understand > >> malware threats, the impact they can have on your business, and how you > >> can protect your company and customers by using code signing. > >> http://p.sf.net/sfu/oracle-sfdevnl > >> _______________________________________________ > >> php-java-bridge-users mailing list > >> php...@li... > >> https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users > >> > > > ------------------------------------------------------------------------------ > > Protect Your Site and Customers from Malware Attacks > > Learn about various malware tactics and how to avoid them. Understand > > malware threats, the impact they can have on your business, and how you > > can protect your company and customers by using code signing. > > http://p.sf.net/sfu/oracle-sfdevnl > > _______________________________________________ > > php-java-bridge-users mailing list > > php...@li... > > https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users > > > Mob: +44 797 329 5617 > > The information contained in this E-mail is confidential. It is intended > only for the stated addressee(s) and access to it by any other person is > unauthorised. If you are not an addressee, you must not disclose, copy, > circulate or in any other way use or rely on the information contained in > this E-mail. Such unauthorised use may be unlawful. If you have received > this E-mail in error, please inform us immediately and delete it and all > copies from your system. > > > > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > php-java-bridge-users mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/php-java-bridge-users > |