# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Launcher
EXEL050=java version %s
EXEL051=Internal VM error\: Out of memory
EXEL052=Internal VM error\: Failed to find class java/lang/String
EXEL053=Internal VM error\: Failed to create byte array for class name %s
EXEL054=Internal VM error\: Failed to create java/lang/String for class name %s
EXEL055=Internal VM error\: Out of memory converting string to UTF Chars for class name %s
EXEL056=Class %s does not implement main()
EXEL057=Internal VM error\: Failed to create argument array
EXEL058=Internal VM error\: Failed to create byte array for argument %s
EXEL059=Internal VM error\: Failed to create java/lang/String for argument %s
EXEL060=Internal VM error\: Failed to set array element for %s
EXEL061=VM startup error\: Out of memory
EXEL062=Internal VM error\: Failed to create Java VM

# Port
PORT001=Failed to allocate memory.
PORT002=Unknown error loading shared library
PORT015=Unable to resolve DLL references - a prerequisite DLL may be missing
PORT016=Internal Error %i
PORT017=Operation Failed\: %d

# Zip
ZIPS000=Unable to open %1$s (%2$s)
ZIPS001=Unable to open %s (Missing export)

