Bug #5615
Project builds should copy out p2jpl.jar from FWD
0%
History
#1 Updated by Roger Borrello almost 5 years ago
Vlad had this suggestion:
Hi Roger.
The goal ant import.db relies on the file p2jpl.jar is located in /usr/share/java, which is not mentioned in instructions and is quite unexpected.
I think, the build_db.xml should be fixed, so the file from the FWD distribution is used. The file should be copied to a temporary location first, and file access must be changed, so the file is readable by the postgresql system account.
Regards,
Vladimir
PS: below is the diff:
=== modified file 'build_db.xml'
--- build_db.xml 2021-07-29 18:11:21 +0000
+++ build_db.xml 2021-08-20 17:11:45 +0000
@@ -9,9 +9,7 @@
<format property="LOG_STAMP" pattern="yyyyMMdd_HHmmss" />
</tstamp>
- <condition property="p2jpl.jar.path" value="${deploy.home.abs}/lib/p2jpl.jar" else="/usr/share/java/p2jpl.jar">
- <isset property="isWindows" />
- </condition>
+ <property name="p2jpl.jar.path" value="${deploy.home}/lib/p2jpl.jar"/>
<!-- drop the H2 database by deleting the ${db.home} directory -->
<target name="clean.db.h2" description="Remove generated database directory." if="${db.h2}">
@@ -171,6 +169,8 @@
<arg value="${db.name}" />
</exec>
<!-- load the FWD UDF library into the database -->
+ <copy file="${p2jpl.jar.path}" tofile="/tmp/p2jpl.jar" />
+ <chmod file="/tmp/p2jpl.jar" perm="ugo+r"/>
<exec executable="psql">
<env key="PGPASSWORD" value="${sql.admin.pass}" />
<arg value="-U" />
@@ -180,7 +180,7 @@
<arg value="-p" />
<arg value="${db.port}" />
<arg value="-c" />
- <arg value="select sqlj.install_jar('file://${p2jpl.jar.path}', 'p2j', true)" />
+ <arg value="select sqlj.install_jar('file:///tmp/p2jpl.jar', 'p2j', true)" />
<arg value="${db.name}" />
</exec>
<!-- set classpath for FWD UDF library -->
#2 Updated by Ovidiu Maxiniuc almost 5 years ago
I encountered a related issue while setting up the pg database on Windows. My installation is on a dedicated drive Z:. The create.db.pg task finished without critical failure and the import advanced to next step, but later I saw this in log:
[exec] ERROR: java.sql.SQLException: I/O exception reading jar file: z
I tried manually to run the script:
select sqlj.install_jar('file://z:/app_dir/deploy/lib/p2jpl.jar', 'p2j', true);
but I got similar results :(. Evidently, the install_jar attempts parse the first argument using a very strict tokenizer and the Windows specific path fail to match its pattern.I tried some tricks like:
- dropping the
file://protocol; - escaping the
:with a\; - escaping the
:with%3Alike normal URLs.
None of these worked. The only accepted solution was to execute:
select sqlj.install_jar('file:///app_dir/deploy/lib/p2jpl.jar', 'p2j', true);
but being carefully to start psql from the Z: drive so that the absolute path is relative to current drive. If somebody has a solution here, please let me know.
PS:
I think the title should read p2jpl.jar instead of p2j.jar.
#3 Updated by Roger Borrello almost 5 years ago
- Subject changed from Project builds should copy out p2j.jar from FWD to Project builds should copy out p2jpl.jar from FWD