File: guestfs-java.pod

package info (click to toggle)
libguestfs 1%3A1.54.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 98,892 kB
  • sloc: ansic: 379,443; ml: 38,771; sh: 10,329; java: 9,631; cs: 6,377; haskell: 5,729; makefile: 5,178; python: 3,821; perl: 2,467; erlang: 2,461; ruby: 349; xml: 275; pascal: 257; javascript: 157; cpp: 10
file content (181 lines) | stat: -rw-r--r-- 4,652 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
=head1 NAME

guestfs-java - How to use libguestfs from Java

=head1 SYNOPSIS

 import com.redhat.et.libguestfs.*;
 
 GuestFS g = new GuestFS ();
 g.add_drive ("disk.img",
              new HashMap<String,Object>() {
                {
                    put ("readonly", Boolean.TRUE);
                    put ("format", "raw");
                }
              });
 g.launch ();

=head1 DESCRIPTION

This manual page documents how to call libguestfs from the Java
programming language.  This page just documents the differences from
the C API and gives some examples.  If you are not familiar with using
libguestfs, you also need to read L<guestfs(3)>.

=head2 CLOSING THE HANDLE

The handle is closed when it is reaped by the garbage collector.
Because libguestfs handles include a lot of state, it is also
possible to close (and hence free) them explicitly by calling
the C<close> method.

=head2 EXCEPTIONS

Errors from libguestfs functions are mapped into the
C<LibGuestFSException> exception.  This has a single parameter which
is the error message (a C<String>).

Calling any method on a closed handle raises the same exception.

If L<malloc(3)> or some other allocation fails inside the bindings,
the C<LibGuestFSOutOfMemory> exception is thrown.

=head2 EVENTS

The L<libguestfs event API|guestfs(3)/EVENTS> is fully supported from
Java.  Create a class which implements the C<EventCallback> interface,
create an instance of this class, and then call the C<GuestFS#set_event_callback>
method to register this instance.  The C<event> method of the class is
called when libguestfs generates an event.

For example, this will print all trace events:

 GuestFS g = new GuestFS ();
 g.set_trace (true);
 g.set_event_callback (
   new EventCallback () {
     public void event (long event, int eh,
                        String buffer, long[] array) {
       System.out.println (GuestFS.eventToString (event) +
                           ": " + buffer);
     }
   },
   GuestFS.EVENT_TRACE);
 g.add_drive_ro ("disk.img");
 // etc.

The output looks similar to this:

 EVENT_TRACE: add_drive_ro "disk.img"
 EVENT_TRACE: add_drive_ro = 0
 // etc.

=head2 OPTIONAL ARGUMENTS

Some methods take an optional map of optional parameters.  An example
of this is C<g.add_drive> which can be called in one of two ways:

 g.add_drive ("disk.img");

or with optional arguments:

 Map<String, Object> optargs =
   new HashMap<String, Object>() {
   {
     put ("readonly", Boolean.TRUE);
     put ("format", "raw");
   }
 };
 g.add_drive ("disk.img", optargs);

For more information on this topic, see
L<guestfs(3)/CALLS WITH OPTIONAL ARGUMENTS>.

=head3 Optional handle parameters

When creating the handle you can also pass a map of optional
parameters:

 Map<String, Object> optargs =
   new HashMap<String, Object>() {
   {
     put ("close_on_exit", Boolean.FALSE);
     put ("environment", Boolean.TRUE);
   }
 };
 GuestFS g = new GuestFS (optargs);

For more information, see L<guestfs(3)/guestfs_create_flags>.

=head1 COMPILING AND RUNNING

Libguestfs for Java is a Java Native Interface (JNI) extension,
supplied in three parts:

=over 4

=item F<libguestfs.jar>

=item F<libguestfs-I<VERSION>.jar>

The pure Java JAR file which contains several classes, the primary one
being C<com.redhat.et.libguestfs.GuestFS>.  Upstream, the JAR file
contains a version number in the filename, but some Linux distros may
rename it without the version number.

=item F<libguestfs_jni.so>

The JNI code (written in C).  This contains private native functions
that interface between Java code and the regular libguestfs C library.
You should B<not> call these directly.

=item F<libguestfs.so>

The regular libguestfs C library.

=back

To compile your Java program, you need to locate the JAR file and add
it to the class path.  For example:

 export CLASSPATH=/usr/share/java/libguestfs.jar
 javac MyProgram.java

To run your Java program, you also need to ensure that the JAR file is
on the class path, as well as the path of your program.  For example:

 export CLASSPATH=.:/usr/share/java/libguestfs.jar
 java MyProgram

=head1 EXAMPLE 1: CREATE A DISK IMAGE

@EXAMPLE1@

=head1 EXAMPLE 2: INSPECT A VIRTUAL MACHINE DISK IMAGE

@EXAMPLE2@

=head1 SEE ALSO

L<guestfs(3)>,
L<guestfs-examples(3)>,
L<guestfs-erlang(3)>,
L<guestfs-gobject(3)>,
L<guestfs-golang(3)>,
L<guestfs-lua(3)>,
L<guestfs-ocaml(3)>,
L<guestfs-perl(3)>,
L<guestfs-python(3)>,
L<guestfs-recipes(1)>,
L<guestfs-ruby(3)>,
L<http://libguestfs.org/>,
L<http://caml.inria.fr/>.

=head1 AUTHORS

Richard W.M. Jones (C<rjones at redhat dot com>)

=head1 COPYRIGHT

Copyright (C) 2011-2023 Red Hat Inc.