Date: Wed, 04 Jun 2003 22:10:00 -0400 From: Michael E Mercer <mmercer@nc.rr.com> To: "'FreeBSD Java mailing list'" <freebsd-java@FreeBSD.ORG> Subject: UnsatisfiedLinkError running nio example code NBTimeServer Message-ID: <3EDEA678.D6EDF17D@nc.rr.com>
next in thread | raw e-mail | index | archive | help
Hello, > uname -a FreeBSD 4.8-STABLE FreeBSD 4.8-STABLE #1: Sat May 31 21:15:33 EDT 2003 i386 > java -version java version "1.4.1-p3" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-p3-mmercer_13_may_2003_19_57) Java HotSpot(TM) Client VM (build 1.4.1-p3-mmercer_13_may_2003_19_57, mixed mode) When I compiled the example code below and tried to run it, I get the following error... > java NBTimeServer Exception in thread "main" java.lang.UnsatisfiedLinkError: init at sun.nio.ch.DevPollArrayWrapper.init(Native Method) at sun.nio.ch.DevPollArrayWrapper.<init>(DevPollArrayWrapper.java:59) at sun.nio.ch.DevPollSelectorImpl.<init>(DevPollSelectorImpl.java:54) at sun.nio.ch.DevPollSelectorProvider.openSelector(DevPollSelectorProvider.java:18) at NBTimeServer.acceptConnections(NBTimeServer.java:67) at NBTimeServer.<init>(NBTimeServer.java:56) at NBTimeServer.main(NBTimeServer.java:120) > cat NBTimeServer.java /* * @(#)NBTimeServer.java 1.4 01/12/13 * A non blocking Internet time server implemented using * the New I/O (NIO) facilities added to J2SE v 1.4. * * Copyright 2001-2002 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * -Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * -Redistribution in binary form must reproduct the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF * THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that Software is not designed, licensed or * intended for use in the design, construction, operation or * maintenance of any nuclear facility. */ import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.channels.spi.*; import java.net.*; import java.util.*; // Listen on a port for connections and write back the current time. public class NBTimeServer { private static final int DEFAULT_TIME_PORT = 8900; // Constructor with no arguments creates a time server on default port. public NBTimeServer() throws Exception { acceptConnections(this.DEFAULT_TIME_PORT); } // Constructor with port argument creates a time server on specified port. public NBTimeServer(int port) throws Exception { acceptConnections(port); } // Accept connections for current time. Lazy Exception thrown. private static void acceptConnections(int port) throws Exception { // Selector for incoming time requests Selector acceptSelector = SelectorProvider.provider().openSelector(); // Create a new server socket and set to non blocking mode ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.configureBlocking(false); // Bind the server socket to the local host and port InetAddress lh = InetAddress.getLocalHost(); InetSocketAddress isa = new InetSocketAddress(lh, port); ssc.socket().bind(isa); // Register accepts on the server socket with the selector. This // step tells the selector that the socket wants to be put on the // ready list when accept operations occur, so allowing multiplexed // non-blocking I/O to take place. SelectionKey acceptKey = ssc.register(acceptSelector, SelectionKey.OP_ACCEPT); int keysAdded = 0; // Here's where everything happens. The select method will // return when any operations registered above have occurred, the // thread has been interrupted, etc. while ((keysAdded = acceptSelector.select()) > 0) { // Someone is ready for I/O, get the ready keys Set readyKeys = acceptSelector.selectedKeys(); Iterator i = readyKeys.iterator(); // Walk through the ready keys collection and process date requests. while (i.hasNext()) { SelectionKey sk = (SelectionKey)i.next(); i.remove(); // The key indexes into the selector so you // can retrieve the socket that's ready for I/O ServerSocketChannel nextReady = (ServerSocketChannel)sk.channel(); // Accept the date request and send back the date string Socket s = nextReady.accept().socket(); // Write the current time to the socket PrintWriter out = new PrintWriter(s.getOutputStream(), true); Date now = new Date(); out.println(now); out.close(); } } } // Entry point. public static void main(String[] args) { // Parse command line arguments and // create a new time server (no arguments yet) try { NBTimeServer nbt = new NBTimeServer(); } catch(Exception e) { e.printStackTrace(); } } }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3EDEA678.D6EDF17D>