PL Java?


#1

Olá a todos.

Estou obtendo o seguinte erro:

[code]

[/code]org.postgresql.util.PSQLException: ERROR: function invoiceopen(numeric, numeric)
does not exist; State=42883; ErrorCode=0
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryEx
ecutorImpl.java:1548)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutor
Impl.java:1316)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.ja
va:191)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Stat
ement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(Abstract
Jdbc2Statement.java:351)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc
2Statement.java:255)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewPr
oxyPreparedStatement.java:76)
at org.compiere.util.CPreparedStatement.executeQuery(CPreparedStatement.
java:121)
at org.compiere.util.DB.getSQLValueBD(DB.java:1474)
at org.compiere.model.MMeasure.updateCalculatedGoals(MMeasure.java:273)
at org.compiere.model.MMeasure.updateGoals(MMeasure.java:162)
at org.compiere.model.MGoal.updateGoal(MGoal.java:384)
at org.compiere.model.MGoal.getUserGoals(MGoal.java:70)
at org.adempiere.apps.graph.PAPanel.get(PAPanel.java:49)
at org.compiere.apps.AMenu.jbInit(AMenu.java:343)
at org.compiere.apps.AMenu.(AMenu.java:131)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)

===========> BarGraph.loadData: SELECT COALESCE(SUM(currencyBase(invoiceOpen(C_I
nvoice_ID, C_InvoicePaySchedule_ID),C_Currency_ID, DateAcct, AD_Client_ID, AD_Or
g_ID)),0)
,TRUNC(DateInvoiced,‘MM’) FROM C_Invoice_v C_Invoice WHERE IsSOTrx=‘Y’ AND Proce
ssed=‘Y’ AND C_Invoice.AD_Client_ID IN(0,11) AND C_Invoice.AD_Org_ID IN(0,11,12)
GROUP BY TRUNC(DateInvoiced,‘MM’) ORDER BY TRUNC(DateInvoiced,‘MM’)
org.postgresql.util.PSQLException: ERROR: function invoiceopen(numeric, numeric)
does not exist; State=42883; ErrorCode=0
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryEx
ecutorImpl.java:1548)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutor
Impl.java:1316)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.ja
va:191)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Stat
ement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(Abstract
Jdbc2Statement.java:351)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc 2Statement.java:255)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewPr oxyPreparedStatement.java:76)
at org.compiere.util.CPreparedStatement.executeQuery(CPreparedStatement. java:121)
at org.adempiere.apps.graph.BarGraph.loadData(BarGraph.java:137)
at org.adempiere.apps.graph.BarGraph.(BarGraph.java:82)
at org.adempiere.apps.graph.PAPanel.init(PAPanel.java:140)
at org.adempiere.apps.graph.PAPanel.(PAPanel.java:64)
at org.adempiere.apps.graph.PAPanel.get(PAPanel.java:52)
at org.compiere.apps.AMenu.jbInit(AMenu.java:343)
at org.compiere.apps.AMenu.(AMenu.java:131)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct orAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC onstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at org.compiere.Adempiere.main(Adempiere.java:584)[/code]

Me parece ser um problema com o PL Java.

Para instalar, eu segui os passos descritos no primeiro artigo da revista Linux Magazine. Alguma sugestão?

Desde já agradeço a atenção.

[]'s Geert Vieira Gosch


#2

Geert,

Eu olhei novamente o artigo da revista, e observei que faltou um passo.

Após a criação arquivo /etc/ld.so.conf/postgresql.conf, é necessário executar o comando:

$ sudo ldconfig

Espero que resolva seu problema.

Um abraço,
Eduardo.


#3

Caros amigos,

É minha primeira participação aqui no Fórum e estou efetuando alguns testes com Adempiere versão 3.4.0 com LBR no Windows XP (SP3), BD PostgreSQL 8.1 e JDK 1.6.0_06.
Li um artigo de instalação, configuração e teste no seguinte endereço: adempiere.com/wiki/index.php … tall_WinXp, passo 12, onde se faz a verificação do funcionamento de PL/Java.
Voltando ao testes sugerido no link acima, ocorrem erros ao tentar abrir um “Pedido de compra”, onde os produtos não são listados!
Não me lembro no momento, mas creio que o Sr.Eduardo Montenegro citou que ao logar com usuário GardemAdmin, se não aparecesse o gráfico de desempenho preenchido do lado direito, seria um indicador de problemas com PL/Java. No entanto, algumas vezes, aparecesse o gráfico e outras não.
De qquer forma, o primeiro erro que é capturado é este:

GridTab.getTrxInfo: C_Order
SQL=SELECT COUNT(*) AS Lines,c.ISO_Code,o.TotalLines,o.GrandTotal,currencyBase(o.GrandTotal,o.C_Currency_ID,o.DateAcct, o.AD_Client_ID,o.AD_Org_ID) AS ConvAmt FROM C_Order o INNER JOIN C_Currency c ON (o.C_Currency_ID=c.C_Currency_ID) INNER JOIN C_OrderLine l ON (o.C_Order_ID=l.C_Order_ID) WHERE o.C_Order_ID=? GROUP BY o.C_Currency_ID, c.ISO_Code, o.TotalLines, o.GrandTotal, o.DateAcct, o.AD_Client_ID, o.AD_Org_ID [13]
org.postgresql.util.PSQLException: ERROR: function currencybase(numeric, numeric, timestamp without time zone, numeric, numeric) does not exist; State=42883; ErrorCode=0

Caso alguém possa ajudar, agradeço desde já!

Rodrigo


#4

então Rodrigo, seu problema é com o pl/java mesmo.

este passo a passo do compierebrasil funciona só até o item 2 (http://www.compierebrasil.com.br/2006/instalacao/instalacao_pg2.htm)

depois para instalar o pljava vá no prompt e entre na pasta onde está o pljava.jar e execute o comando (importante, a pasta bin do Postgres deve estar no PATH no windows)

psql -f install.sql

este processo, vai instalar as funções pl/java no seu banco.

OBS: provavelmente vc terá que fazer um RUN_ImportAdempiere novamente, pois como o pljava não estava instalado quando vc criou o banco as functions não devem estar no banco.

sds, Mario


#5

Mário,

Muito obrigado por responder prontamente!
Mesmo assim não funcionou. Eu revi algumas documentações e me parece que a configuração do meu ambiente não estava de acordo com o recomendado. Assim, como ainda é um teste, resolvi abolir o uso do JDK 1.6 e reinstalar o 1.5.0_16; e ao invés de usar o PostgreSQL 8.1 estou usando agora o 8.2.
Ah… o PL/Java já estava instalado no banco, inclusive eu já havia executado os scripts que vc citou, inclusive, as variaveis de ambientes estavam corretas. Mas, é certo que eu errei em algum momento! Pelo menos agora, com sua informação, sei que o erro era mesmo com PL/Java.

Abraço!

Rodrigo


#6

Caro Mário,

Refiz todo o processo de instalação em outra máquina e funcionou na hora! O SO do notebook que estava usando devia estar com algum problema; formatei o disco e efetuei nova instalação e tudo OK! Funcionou tudo de primeira!
Só estou postando para agradecer e para que outros saibam que nem sempre o problema pode ser com o PL/Java; pode ser o SO.

Muito Obrigado!

Rodrigo