tdf#157613 make sure surface is not a null pointer
[LibreOffice.git] / ure / source / README
blobda003caacd816c56a86d8c110e68a6988ff8bb59
2 # This file is part of the LibreOffice project.
4 # This Source Code Form is subject to the terms of the Mozilla Public
5 # License, v. 2.0. If a copy of the MPL was not distributed with this
6 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 # This file incorporates work covered by the following license notice:
10 #   Licensed to the Apache Software Foundation (ASF) under one or more
11 #   contributor license agreements. See the NOTICE file distributed
12 #   with this work for additional information regarding copyright
13 #   ownership. The ASF licenses this file to you under the Apache
14 #   License, Version 2.0 (the "License"); you may not use this file
15 #   except in compliance with the License. You may obtain a copy of
16 #   the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 Overview of URE installation
20 -----------------------------
22 ELF platforms (Linux, Solaris, *BSD):
24 /opt/libreoffice/ure/LICENSE
25 /opt/libreoffice/ure/THIRDPARTYLICENSEREADME.html
26 /opt/libreoffice/ure/README
27 /opt/libreoffice/ure/bin/uno
28 /opt/libreoffice/ure/bin/regview
29 /opt/libreoffice/ure/bin/javaldx
30 /opt/libreoffice/ure/lib/libuno_cppu.so.3
31 /opt/libreoffice/ure/lib/libuno_cppuhelpergcc3.so.3
32 /opt/libreoffice/ure/lib/libuno_purpenvhelpergcc3.so.3
33 /opt/libreoffice/ure/lib/libuno_sal.so.3
34 /opt/libreoffice/ure/lib/libuno_salhelpergcc3.so.3
35 /opt/libreoffice/ure/share/java/unoloader.jar
36 /opt/libreoffice/ure/share/java/juh.jar
37 /opt/libreoffice/ure/share/java/jurt.jar
38 /opt/libreoffice/ure/share/java/libreoffice.jar
39 /opt/libreoffice/ure/share/java/ridl.jar
40 /opt/libreoffice/ure/share/misc/types.rdb
41 /opt/libreoffice/ure/share/misc/services.rdb
42 /opt/libreoffice/ure/lib/libxml2.so.2  [external]
43 /opt/libreoffice/ure/bin/uno.bin  [private]
44 /opt/libreoffice/ure/lib/unorc  [private]
45 /opt/libreoffice/ure/lib/libreglo.so  [private]
46 /opt/libreoffice/ure/lib/libstorelo.so  [private]
47 /opt/libreoffice/ure/lib/libunoidllo.so  [private]
48 /opt/libreoffice/ure/lib/libxmlreaderlo.so  [private]
49 /opt/libreoffice/ure/lib/libjvmaccesslo.so  [private]
50 /opt/libreoffice/ure/lib/libjvmfwklo.so  [private]
51 /opt/libreoffice/ure/lib/JREProperties.class  [private]
52 /opt/libreoffice/ure/lib/jvmfwk3rc  [private]
53 /opt/libreoffice/ure/lib/libgcc3_uno.so  [private]
54 /opt/libreoffice/ure/lib/libjava_uno.so  [private]
55 /opt/libreoffice/ure/lib/libunsafe_uno_uno.so  [private]
56 /opt/libreoffice/ure/lib/libaffine_uno_uno.so  [private]
57 /opt/libreoffice/ure/lib/liblog_uno_uno.so  [private]
58 /opt/libreoffice/ure/lib/libjpipe.so  [private]
59 /opt/libreoffice/ure/lib/libjuh.so  [private]
60 /opt/libreoffice/ure/lib/libjuhx.so  [private]
61 /opt/libreoffice/ure/lib/libsal_textenclo.so  [private]
62 /opt/libreoffice/ure/lib/libbinaryurplo.so  [private]
63 /opt/libreoffice/ure/lib/libbootstraplo.so  [private]
64 /opt/libreoffice/ure/lib/libi18nlangtag.so  [private]
65 /opt/libreoffice/ure/lib/libintrospectionlo.so  [private]
66 /opt/libreoffice/ure/lib/libinvocadaptlo.so  [private]
67 /opt/libreoffice/ure/lib/libinvocationlo.so  [private]
68 /opt/libreoffice/ure/lib/libiolo.so  [private]
69 /opt/libreoffice/ure/lib/libjavaloaderlo.so  [private]
70 /opt/libreoffice/ure/lib/libjavavmlo.so  [private]
71 /opt/libreoffice/ure/lib/libnamingservicelo.so  [private]
72 /opt/libreoffice/ure/lib/libproxyfaclo.so  [private]
73 /opt/libreoffice/ure/lib/libreflectionlo.so  [private]
74 /opt/libreoffice/ure/lib/libstocserviceslo.so  [private]
75 /opt/libreoffice/ure/lib/libuuresolverlo.so  [private]
76 /opt/libreoffice/ure/share/java/java_uno.jar  [private]
77 /opt/libreoffice/ure/share/java/java_websocket.jar [private]
78 /opt/libreoffice/ure/share/misc/javavendors.xml  [private]
80 Windows:
82 Program Files\URE\LICENSE
83 Program Files\URE\THIRDPARTYLICENSEREADME.html
84 Program Files\URE\README
85 Program Files\URE\bin\uno.exe
86 Program Files\URE\bin\regview.exe
87 Program Files\URE\bin\cppu3.dll
88 Program Files\URE\bin\cppuhelper3MSC.dll
89 Program Files\URE\bin\purpenvhelper3MSC.dll
90 Program Files\URE\bin\sal3.dll
91 Program Files\URE\bin\salhelper3MSC.dll
92 Program Files\URE\java\unoloader.jar
93 Program Files\URE\java\libreoffice.jar
94 Program Files\URE\java\juh.jar
95 Program Files\URE\java\jurt.jar
96 Program Files\URE\java\ridl.jar
97 Program Files\URE\misc\types.rdb
98 Program Files\URE\misc\services.rdb
99 Program Files\URE\bin\libxml2.dll  [external]
100 Program Files\URE\bin\uno.ini  [private]
101 Program Files\URE\bin\reglo.dll  [private]
102 Program Files\URE\bin\storelo.dll  [private]
103 Program Files\URE\bin\unoidllo.dll  [private]
104 Program Files\URE\bin\xmlreaderlo.dll  [private]
105 Program Files\URE\bin\jvmaccesslo.dll  [private]
106 Program Files\URE\bin\jvmfwklo.dll  [private]
107 Program Files\URE\bin\JREProperties.class  [private]
108 Program Files\URE\bin\jvmfwk3.ini  [private]
109 Program Files\URE\bin\msci_uno.dll  [private]
110 Program Files\URE\bin\java_uno.dll  [private]
111 Program Files\URE\bin\cli_uno.dll [private]
112 Program Files\URE\bin\unsafe_uno_uno.dll  [private]
113 Program Files\URE\bin\affine_uno_uno.dll  [private]
114 Program Files\URE\bin\log_uno_uno.dll  [private]
115 Program Files\URE\bin\jpipe.dll  [private]
116 Program Files\URE\bin\jpipx.dll  [private]
117 Program Files\URE\bin\juh.dll  [private]
118 Program Files\URE\bin\juhx.dll  [private]
119 Program Files\URE\bin\sal_textenclo.dll  [private]
120 Program Files\URE\bin\binaryurplo.dll  [private]
121 Program Files\URE\bin\bootstraplo.dll  [private]
122 Program Files\URE\bin\i18nlangtag.dll  [private]
123 Program Files\URE\bin\introspectionlo.dll  [private]
124 Program Files\URE\bin\invocadaptlo.dll  [private]
125 Program Files\URE\bin\invocationlo.dll  [private]
126 Program Files\URE\bin\iolo.dll  [private]
127 Program Files\URE\bin\javaloaderlo.dll  [private]
128 Program Files\URE\bin\javavmlo.dll  [private]
129 Program Files\URE\bin\namingservicelo.dll  [private]
130 Program Files\URE\bin\proxyfaclo.dll  [private]
131 Program Files\URE\bin\reflectionlo.dll  [private]
132 Program Files\URE\bin\stocserviceslo.dll  [private]
133 Program Files\URE\bin\uuresolverlo.dll  [private]
134 Program Files\URE\bin\uwinapi.dll  [private]
135 Program Files\URE\java\java_uno.jar  [private]
136 Program Files\URE\java\java_websocket.jar [private]
137 Program Files\URE\misc\javavendors.xml  [private]
139 %windir%\assembly\cli_basetypes.dll [GAC]
140 %windir%\assembly\cli_ure.dll [GAC]
141 %windir%\assembly\cli_uretypes.dll [GAC]
142 %windir%\assembly\cli_cppuhelper.dll [GAC]
143 %windir%\assembly\policy.1.0.cli_basetypes.dll [GAC]
144 %windir%\assembly\policy.1.0.cli_ure.dll [GAC]
145 %windir%\assembly\policy.1.0.cli_uretypes.dll [GAC]
146 %windir%\assembly\policy.1.0.cli_cppuhelper.dll [GAC]
148 Files marked as [external] are included in the URE installation because the URE
149 needs them and it cannot be guaranteed that they are available on a given
150 system.  Applications using the URE may need those files too, so they are made
151 available as non-private files of the URE installation.  However, in an ideal
152 world, those files would not need to be included in the URE installation.
154 Files marked as [private] are private to the URE installation.  To avoid
155 stability issues, applications that use the URE should not access the
156 functionality of these files.
158 Files marked as [GAC] are installed in the Global Assembly Cache on Windows. The
159 file path reflects the path as seen in the Explorer with the Assembly
160 Cache Viewer Tool (Shfusion.dll) installed. The actual paths are different.
163 Public Files in a URE Installation
164 ----------------------------------
166 A URE installation contains the following public files:
168 - uno is the executable file that runs UNO components.  For more details, see
169 the SDK Developer's Guide.
171 - regview is a tool that works with old-format binary registries that contain
172 UNO type or UNO service information.  For more details, see the SDK Developer's
173 Guide.
175 - javaldx is a helper program on Linux, Solaris, and *BSD that
176 enables Java executables to use a Java VM, such as OpenJDK or the Sun JDK/JRE.
177 Executables such as uno run this helper automatically.
179 - cppu, cppuhelper, purpenvhelper, sal, and salhelper are the public C++ UNO
180 runtime dynamic libraries that client code can call.  For details on the
181 functionality that these libraries offer, see the "C++ Reference" section of the
182 SDK HTML documentation.  The corresponding C++ header files are not in the URE,
183 but rather in the SDK.
185 - libreoffice.jar and unoloader.jar are the public Java UNO runtime
186 Java[tm] Archives (JARs) that client code can call.
187 juh.jar, jurt.jar, ridl.jar, unoil.jar are still provided for backwards compatibility,
188 but are basically empty and have been merged into libreoffice.jar.
189 For details on the functionality that these files offer, see the
190 "Java UNO Runtime Reference" section of the SDK HTML documentation.
192 - types.rdb and services.rdb are preconfigured UNO type and service registries.
193 For more details, see the "Deploying a URE" section of this README.
196 Deploying a URE
197 ---------------
199 By default, the URE is installed in /opt/libreoffice/ure on Linux,
200 Solaris, and *BSD, and in Program Files\URE on Windows. If you
201 want, you can override this location when you install the URE, for example, with
202 rpm --relocate on Linux.  The URE is designed so that multiple instances of the
203 URE can coexist on a single system in different locations.
205 On Windows, the path to the installed URE is stored in the registry under the
206 path "HKEY_CLASSES_ROOT\Software\LibreOffice\URE" and key "Path".
209 UNO Deployment Variables
210 ------------------------
212 The URE installation is preconfigured with several UNO types and UNO services.
213 The available types and services are listed in the types.rdb and services.rdb
214 files respectively.  The location of these files is stored by two UNO deployment
215 variables, namely UNO_TYPES and UNO_SERVICES.  These variables are set up by a
216 unorc or uno.ini that is private to the URE installation.  This private file
217 also contains the private deployment variables URE_INTERNAL_LIB_DIR,
218 URE_INTERNAL_JAVA_DIR, and URE_INTERNAL_JAVA_CLASSPATH, which are required by
219 the URE.
221 The UNO_TYPES and UNO_SERVICES variables automatically search the following
222 locations for types.rdb and services.rdb files:
224 Linux, Solaris, and *BSD:
226 - <URE installation>/share/misc/ types.rdb and services.rdb, respectively
227 - any URLs listed in the public deployment variables URE_MORE_TYPES and
228   URE_MORE_SERVICES, respectively
230 Windows:
232 - <URE installation>\misc\ types.rdb and services.rdb, respectively
233 - any URLs listed in the public deployment variables URE_MORE_TYPES and
234   URE_MORE_SERVICES, respectively
236 NOTE: The URE on Windows does not support a system-wide deployment of additional
237 types.rdb and services.rdb files.  That is, you cannot store additional
238 types.rdb and services.rdb files in a Documents and Settings\All
239 Users\Application Data\URE directory.
241 URE_MORE_TYPES and URE_MORE_SERVICES each contain zero or more space-separated
242 URI descriptors.  A URI descriptor is either a URI (denoting an individual file)
243 or a URI embedded in "<" and ">*" (denoting all the files contained non-
244 recursively within the directory denoted by the given URI).
246 The Java UNO environment needs type information in the form of Java class files
247 instead of rdb files.  Additional types are searched for in any URLs listed in
248 the public deployment variable URE_MORE_JAVA_TYPES.
250 For details on how to override the UNO deployment variables, see the SDK
251 Developer's Guide or go to http://udk.openoffice.org/common/man/concept/
252 micro_deployment.html.
255 URE Java Framework
256 ------------------
258 When a URE executable, such as uno, starts a Java VM, the URE Java Framework
259 searches for a suitable JDK/JRE installation.  For more information on the URE
260 Java Framework, go to http://udk.openoffice.org/common/man/spec/
261 javavendorextension.sxw.  The private javavendors.xml file in a URE installation
262 provides preconfigured support for various JDK/JRE versions.  The private
263 jvmfwk3rc or jvmfwk3.ini file specifies the location of a suitable JDK/JRE
264 installation.  When an executable tries to start a Java VM, the URE searches the
265 relevant Java settings file for information on a suitable JDK/JRE version.
267 NOTE: On any platform, you can delete the javasettings_${_OS}_${_ARCH}.xml file
268 if the file contains problematic stale data.
270 By default, the URE does not search for a Java settings file, but instead
271 searches for a suitable JDK/JRE installation whenever necessary.  You can
272 override this by setting the URE_OVERRIDE_JAVA_JFW_SHARED_DATA and
273 URE_OVERRIDE_JAVA_JFW_USER_DATA deployment variables.  If
274 URE_OVERRIDE_JAVA_JFW_USER_DATA is set, the URE will update the relevant
275 information in
276 ${URE_OVERRIDE_JAVA_JFW_USER_DATA}/javasettings_${_OS}_${_ARCH}.xml when it
277 searches for a suitable JDK/JRE installation.  You can also use the
278 UNO_JAVA_JFW_JREHOME deployment variable to specify the location of a JDK/JRE
279 installation.  For more information on this variable, see
280 http://udk.openoffice.org/common/man/spec/javavendorextension.sxw.
282 The URE allows clients to extend the content of UNO_JAVA_JFW_CLASSPATH_URLS (see
283 http://udk.openoffice.org/common/man/spec/javavendorextension.sxw):  The content
284 of the public deployment variable URE_MORE_JAVA_CLASSPATH_URLS, if set, is
285 added to the end of the URE's UNO_JAVA_JFW_CLASSPATH_URLS list.
287 You might experience problems in an SDK environment that uses different JDK/JRE
288 versions for the SDK and the URE.  This problem arises when the OO_SDK_JAVA_HOME
289 SDK environment variable specifies a different Java VM than the Java VM that is
290 used in the URE Java Framework.  See the "Installation Guide" section of the SDK
291 HTML documentation to find out how to set the  OO_SDK_JAVA_HOME environment
292 variable.
295 C++ and Java UNO Components
296 ---------------------------
298 C++ UNO components run from within the uno executable can depend on an
299 environment in which the public C++ UNO runtime dynamic libraries (cppu,
300 cppuhelper, purpenvhelper, sal, salhelper) and the external dynamic libraries
301 (libxml2 etc.) are already available (that is, on Linux, Solaris, and
302 *BSD, a component dynamic library need not make sure that the UNO
303 runtime dynamic libraries it needs can be found on its RPATH).
305 Similarly, Java UNO components can depend on an environment in which the public
306 Java UNO runtime JARs are already available (that is, a component JAR need not
307 list in its manifest Class-Path the UNO runtime JARs it needs).
309 If a Java UNO component requires additional UNO types, use the UNO-Type-Path
310 manifest entry to specify the location of the UNO types.  The UNO-Type-Path is
311 similar to the Class-Path manifest entry and can contain URLs of JARs and
312 directories that contain the Java classes that represent additional UNO types.
313 The UnoClassLoader evaluates the UNO-Type-Path manifest entry to ensure that the
314 additional UNO types are available to the Java UNO environment.
316 The UNO-Type-Path can have the following entries:
318 - UNO-Type-Path:
319 Current JAR does not contain UNO types.
321 - UNO-Type-Path: <>
322 Current JAR contains UNO types.
324 - UNO-Type-Path: any/other/jar.jar yet/another/jar.jar
325 Current JAR brings other JARs that contain UNO types.
327 - UNO-Type-Path: any/other/jar.jar <> yet/another/jar.jar
328 Current JAR and other JARs that the current JARs uses contain UNO types.
330 NOTE: If you do not include the UNO-Type-Path manifest entry, the URE assumes
331 that the current JAR contains UNO types.
333 If a Java application requires the Java UNO environment, the UnoClassLoader must
334 be set up to load the relevant Java classes.  For example, Runner.java in the
335 uretest bundle is packed as runner.jar, which the makefiles use to launch the
336 javaclient.jar application.  For more information, see
337 com.sun.star.lib.unoloader.UnoClassLoader and
338 com.sun.star.lib.unoloader.UnoLoader in the "Java UNO Runtime Reference" section
339 of the SDK HTML documentation.