From owner-freebsd-java@FreeBSD.ORG Thu Jun 5 00:24:37 2003 Return-Path: Delivered-To: freebsd-java@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1C42537B401 for ; Thu, 5 Jun 2003 00:24:37 -0700 (PDT) Received: from relay1.cris.net (relay1.cris.net [212.110.128.64]) by mx1.FreeBSD.org (Postfix) with ESMTP id 05DF643F75 for ; Thu, 5 Jun 2003 00:24:33 -0700 (PDT) (envelope-from ml@phantom.cris.net) Received: from phantom.cris.net (root@phantom.cris.net [212.110.130.74]) by relay1.cris.net (8.12.6/8.12.6) with ESMTP id h55AP3U6069984; Thu, 5 Jun 2003 10:25:04 GMT Received: (from ml@localhost) by phantom.cris.net (8.12.6/8.12.2) id h557VZC3060052; Thu, 5 Jun 2003 10:31:35 +0300 (EEST) (envelope-from ml) Date: Thu, 5 Jun 2003 10:31:35 +0300 From: Alexey Zelkin To: Michael E Mercer Message-ID: <20030605103135.A60018@phantom.cris.net> References: <3EDEA678.D6EDF17D@nc.rr.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <3EDEA678.D6EDF17D@nc.rr.com>; from mmercer@nc.rr.com on Wed, Jun 04, 2003 at 10:10:00PM -0400 X-Operating-System: FreeBSD 4.7-STABLE i386 cc: 'FreeBSD Java mailing list' Subject: Re: UnsatisfiedLinkError running nio example code NBTimeServer X-BeenThere: freebsd-java@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting Java to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jun 2003 07:24:37 -0000 hi, Unfortunatelly sun.nio.ch.DevPollArrayWrapper is Solaris' onlu thingy and not implemented for both linux and bsd. I'll take a look. Thanks for notice! On Wed, Jun 04, 2003 at 10:10:00PM -0400, Michael E Mercer wrote: > 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.(DevPollArrayWrapper.java:59) > at sun.nio.ch.DevPollSelectorImpl.(DevPollSelectorImpl.java:54) > at > sun.nio.ch.DevPollSelectorProvider.openSelector(DevPollSelectorProvider.java:18) > > at NBTimeServer.acceptConnections(NBTimeServer.java:67) > at NBTimeServer.(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(); > } > } > } > > > _______________________________________________ > freebsd-java@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-java > To unsubscribe, send any mail to "freebsd-java-unsubscribe@freebsd.org"