Примечание: свойство Undefined: java_Client :: $ cancelProxyCreationTag в http: // localhost: 8080 / JavaBridge / java / Java.inc в строке 1994

Я пытаюсь использовать отчет Jasper с приложением PHP yii. Я уже установил jasper-report-server с явно tomcat и apache с php. Я уже настроил загрузку отчетов, и у меня такая ошибка:

Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new org.altic.jasperReports.JdbcConnection. Cause: java.lang.ClassNotFoundException: org.altic.jasperReports.JdbcConnection

Скриншот здесь:

скриншот

Неустранимая ошибка: Uncaught [[o: Exception]: "java.lang.Exception: CreateInstance failed: new org.altic.jasperReports.JdbcConnection. Причина: java.lang.ClassNotFoundException: org.altic.jasperReports.JdbcConnection VM: 1.7.0_101 @ http://java.oracle.com/ "по адресу: # -10 org.apache.catalina. loader.WebappClassLoader.loadClass (WebappClassLoader.java:1702) # -9 org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1547) # -8 java.lang.Class.forName0 (собственный метод) # -8 java.lang.Class.forName (Class.java:278) # -6 php.java.bridge.Util.classForName (Util.java:1518) # -5 php.java.bridge.JavaBridge.CreateObject (JavaBridge.java: 445) # -4 php.java.bridge.Request.handleRequest (Request.java:458) # -3 php.java.bridge.Request.handleRequests (Request.java:500) # -2 php.java.bridge.http .ContextRunner.run (ContextRunner.java:145) # -1 php.java.bridge.ThreadPool $ Delegate.run (ThreadPool.java:60) # 0 http://localhost:8080/JavaBridge/java/Джava.inc(232): java_ThrowExceptionProxyFactory-> getProxy (4, 'php.java.bridge ... ',' T ', false) # 1 http://localho в http://localhost:8080/JavaBridge/java/Java.inc в строке 195]


person Andres    schedule 15.07.2016    source источник
comment
Я снова установил JavaBridge и Jasper и теперь работает. Но спасибо за вашу помощь.   -  person Andres    schedule 25.07.2016


Ответы (2)


У меня была такая же проблема, и я решил ее инициализировать вручную свойство cancelProxyCreationTag при создании JasperCompileManager:

$compileManager = new \JavaClass("net.sf.jasperreports.engine.JasperCompileManager");
$compileManager->__client->cancelProxyCreationTag = 0;

cancelProxyCreationTag - это свойство, которое используется, но не объявляется и не инициализируется в сгенерированном файле Java.inc ...

person Al Foиce ѫ    schedule 18.07.2016

java.lang.ClassNotFoundException указывает, что класс Java отсутствует на стороне сервера моста java (обычно в развернутом файле сервлета / .war).

Без кода я не могу дать точный ответ, но похоже, что ваша инициализация JDBC в некотором роде неверна. Возможно, вы забыли включить драйвер JDBC в развернутый сервлет (например, соединитель mysql jdbc ...) или не передали правильно инициализированный объект org.altic.jasperReports.JdbcConnection.


Относительно уведомления java_Client::$cancelProxyCreationTag. Это не должно быть причиной проблемы, это фактически отсутствующее свойство в java_Client, которое достигается всякий раз, когда клиент отменяет регистрацию своего экземпляра (например, при неперехваченном исключении). Это уведомление связано с клиентом Java.inc, для альтернативного переработанного клиента см. Также soluble / japha client на github он совместим с php / java bridge 6.2.1 и содержит некоторые исправления и улучшения в исходном клиенте. См. Также мой комментарий к этому выпуск

person Sébastien Vanvelthem    schedule 14.08.2016