---
name: "jwebserver-openjdk21"
section: "1"
platform: "linux"
package: "jdk21-openjdk"
version: "21.0.13.0.3.u1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/jwebserver-openjdk21"
---

# jwebserver-openjdk21(1)

launch the Java Simple Web Server

## NAME

jwebserver - launch the Java Simple Web Server

## SYNOPSIS

jwebserver \[*options*\]

- *options*

  Command-line options. For a detailed description of the options, see **Options**.

## DESCRIPTION

The jwebserver tool provides a minimal HTTP server, designed to be used for prototyping, testing, and debugging. It serves a single directory hierarchy, and only serves static files. Only HTTP/1.1 is supported; HTTP/2 and HTTPS are not supported.

Only idempotent HEAD and GET requests are served. Any other requests receive a 501 - Not Implemented or a 405 - Not Allowed response. GET requests are mapped to the directory being served, as follows:

- •

  If the requested resource is a file, its content is served.

- •

  If the requested resource is a directory that contains an index file, the content of the index file is served.

- •

  Otherwise, the names of all files and subdirectories of the directory are listed. Symbolic links and hidden files are not listed or served.

MIME types are configured automatically, using the built-in table. For example, .html files are served as text/html and .java files are served as text/plain.

jwebserver is located in the jdk.httpserver module, and can alternatively be started with java -m jdk.httpserver. It is based on the web server implementation in the com.sun.net.httpserver package. The com.sun.net.httpserver.SimpleFileServer class provides a programmatic way to retrieve the server and its components for reuse and extension.

## USAGE

-

  ```
  jwebserver [-b bind address] [-p port] [-d directory]
             [-o none|info|verbose] [-h to show options]
             [-version to show version information]
  ```

## OPTIONS

- \-h or -? or --help

  Prints the help message and exits.

- \-b *addr* or --bind-address *addr*

  Specifies the address to bind to. Default: 127.0.0.1 or ::1 (loopback). For all interfaces use -b 0.0.0.0 or -b ::.

- \-d *dir* or --directory *dir*

  Specifies the directory to serve. Default: current directory.

- \-o *level* or --output *level*

  Specifies the output format. none \| info \| verbose. Default: info.

- \-p *port* or --port *port*

  Specifies the port to listen on. Default: 8000.

- \-version or --version

  Prints the version information and exits.

To stop the server, press Ctrl + C.

## STARTING THE SERVER

The following command starts the Simple Web Server:

-

  ```
  $ jwebserver
  ```

If startup is successful, the server prints a message to System.out listing the local address and the absolute path of the directory being served. For example:

-

  ```
  $ jwebserver
  Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
  Serving /cwd and subdirectories on 127.0.0.1 port 8000
  URL http://127.0.0.1:8000/
  ```

## CONFIGURATION

By default, the server runs in the foreground and binds to the loopback address and port 8000. This can be changed with the -b and -p options. For example, to bind the Simple Web Server to all interfaces, use:

-

  ```
  $ jwebserver -b 0.0.0.0
  Serving /cwd and subdirectories on 0.0.0.0 (all interfaces) port 8000
  URL http://123.456.7.891:8000/
  ```

Note that this makes the web server accessible to all hosts on the network. *Do not do this unless you are sure the server cannot leak any* *sensitive information.*

As another example, use the following command to run on port 9000:

-

  ```
  $ jwebserver -p 9000
  ```

By default, the files of the current directory are served. A different directory can be specified with the -d option.

By default, every request is logged on the console. The output looks like this:

-

  ```
  127.0.0.1 - - [10/Feb/2021:14:34:11 +0000] "GET /some/subdirectory/ HTTP/1.1" 200 -
  ```

Logging output can be changed with the -o option. The default setting is info. The verbose setting additionally includes the request and response headers as well as the absolute path of the requested resource.

## STOPPING THE SERVER

Once started successfully, the server runs until it is stopped. On Unix platforms, the server can be stopped by sending it a SIGINT signal (Ctrl+C in a terminal window).

## HELP OPTION

The -h option displays a help message describing the usage and the options of the jwebserver.
