/*******************************************************************************
 * Copyright (c) 2000, 2018 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 * IBM - Initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.internal.launching;

import org.eclipse.osgi.util.NLS;

public class LaunchingMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.jdt.internal.launching.LaunchingMessages";//$NON-NLS-1$

	public static String AbstractJavaLaunchConfigurationDelegate_Java_project_not_specified_9;
	public static String AbstractJavaLaunchConfigurationDelegate_JRE_home_directory_for__0__does_not_exist___1__6;
	public static String AbstractJavaLaunchConfigurationDelegate_JRE_home_directory_not_specified_for__0__5;
	public static String AbstractJavaLaunchConfigurationDelegate_Main_type_not_specified_11;
	public static String AbstractJavaLaunchConfigurationDelegate_Project_does_not_exist_or_is_not_a_Java_project_10;
	public static String AbstractJavaLaunchConfigurationDelegate_The_specified_JRE_installation_does_not_exist_4;
	public static String AbstractJavaLaunchConfigurationDelegate_Working_directory_does_not_exist___0__12;

	public static String ClasspathContainerSourceContainerTypeDelegate_5;
	public static String ClasspathContainerSourceContainerTypeDelegate_6;
	public static String ClasspathContainerSourceContainerTypeDelegate_7;

	public static String ClasspathVariableSourceContainerTypeDelegate_5;
	public static String ClasspathVariableSourceContainerTypeDelegate_6;
	public static String ClasspathVariableSourceContainerTypeDelegate_7;

	public static String DefaultProjectClasspathEntry_2;

	public static String DefaultProjectClasspathEntry_3;
	public static String DefaultProjectClasspathEntry_4;

	public static String EEVMType_1;
	public static String EEVMType_2;
	public static String EEVMType_3;
	public static String EEVMType_4;
	public static String EEVMType_5;
	public static String EEVMType_6;

	public static String ExecutionEnvironmentDescription_0;

	public static String ExecutionEnvironmentDescription_1;

	public static String JavaLocalApplicationLaunchConfigurationDelegate_Verifying_launch_attributes____1;
	public static String JavaLocalApplicationLaunchConfigurationDelegate_Creating_source_locator____2;
	public static String JavaLocalApplicationLaunchConfigurationDelegate_0;

	public static String JavaProjectSourceContainerTypeDelegate_5;
	public static String JavaProjectSourceContainerTypeDelegate_6;
	public static String JavaProjectSourceContainerTypeDelegate_7;

	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Connector_not_specified_2;
	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Attaching_to__0_____1;
	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Verifying_launch_attributes____1;
	public static String JavaRemoteApplicationLaunchConfigurationDelegate_Creating_source_locator____2;

	public static String JavaRuntime_24;

	public static String JavaRuntime_25;

	public static String JavaRuntime_badFormat;
	public static String JavaRuntime_Specified_VM_install_type_does_not_exist___0__2;
	public static String JavaRuntime_Specified_VM_install_not_found__type__0___name__1__2;
	public static String JavaRuntime_Launch_configuration__0__references_non_existing_project__1___1;
	public static String JavaRuntime_Could_not_resolve_classpath_container___0__1;
	public static String JavaRuntime_Classpath_references_non_existant_project___0__3;
	public static String JavaRuntime_Classpath_references_non_existant_archive___0__4;
	public static String JavaRuntime_26;
	public static String JavaRuntime_27;
	public static String JavaRuntime_28;
	public static String JavaRuntime_32;

	public static String LaunchingPlugin_35;
	public static String LaunchingPlugin_36;
	public static String LaunchingPlugin_37;
	public static String LaunchingPlugin_32;
	public static String LaunchingPlugin_34;
	public static String LaunchingPlugin_0;
	public static String LaunchingPlugin_1;

	public static String LaunchingPlugin_38;

	public static String LaunchingPlugin_39;
	public static String LaunchingPlugin_40;

	public static String libraryLocation_assert_libraryNotNull;

	public static String SocketAttachConnector_Failed_to_connect_to_remote_VM_1;
	public static String SocketAttachConnector_Socket_attaching_connector_not_available_3;
	public static String SocketAttachConnector_Standard__Socket_Attach__4;
	public static String SocketAttachConnector_Failed_to_connect_to_remote_VM_because_of_unknown_host____0___1;
	public static String SocketAttachConnector_Failed_to_connect_to_remote_VM_as_connection_was_refused_2;
	public static String SocketAttachConnector_Connecting____1;
	public static String SocketAttachConnector_Configuring_connection____1;
	public static String SocketAttachConnector_Establishing_connection____2;

	public static String SocketListenConnector_0;
	public static String SocketListenConnector_1;
	public static String SocketListenConnector_2;
	public static String SocketListenConnector_3;
	public static String SocketListenConnector_4;
	public static String SocketListenConnectorProcess_0;
	public static String SocketListenConnectorProcess_1;
	public static String SocketListenConnectorProcess_4;
	public static String SocketListenConnectorProcess_5;

	public static String StandardVMDebugger_Could_not_find_a_free_socket_for_the_debugger_1;
	public static String StandardVMDebugger_Couldn__t_connect_to_VM_4;
	public static String StandardVMDebugger_Couldn__t_connect_to_VM_5;
	public static String StandardVMDebugger_Couldn__t_find_an_appropriate_debug_connector_2;
	public static String StandardVMDebugger_Launching_VM____1;
	public static String StandardVMDebugger_Finding_free_socket____2;
	public static String StandardVMDebugger_Constructing_command_line____3;
	public static String StandardVMDebugger_Starting_virtual_machine____4;
	public static String StandardVMDebugger_Establishing_debug_connection____5;

	public static String StandardVMRunner__0____1___2;
	public static String StandardVMRunner__0__at_localhost__1__1;
	public static String StandardVMRunner_Specified_working_directory_does_not_exist_or_is_not_a_directory___0__3;
	public static String StandardVMRunner_Launching_VM____1;
	public static String StandardVMRunner_Constructing_command_line____2;
	public static String StandardVMRunner_Starting_virtual_machine____3;
	public static String StandardVMRunner_Unable_to_locate_executable_for__0__1;
	public static String StandardVMRunner_Specified_executable__0__does_not_exist_for__1__4;

	public static String StandardVMType_Not_a_JDK_Root__Java_executable_was_not_found_1;
	public static String StandardVMType_ok_2;
	public static String StandardVMType_Standard_VM_3;
	public static String StandardVMType_Not_a_JDK_root__System_library_was_not_found__1;

	public static String VMDefinitionsContainer_0;

	public static String VMDefinitionsContainer_10;

	public static String VMDefinitionsContainer_2;

	public static String VMDefinitionsContainer_3;

	public static String VMDefinitionsContainer_4;

	public static String VMDefinitionsContainer_5;

	public static String VMDefinitionsContainer_6;

	public static String VMDefinitionsContainer_7;

	public static String VMDefinitionsContainer_9;

	public static String vmInstall_assert_idNotNull;
	public static String vmInstall_assert_typeNotNull;
	public static String vmInstall_could_not_determine_java_Version;

	public static String vmInstallType_duplicateVM;

	public static String vmRunnerConfig_assert_classNotNull;
	public static String vmRunnerConfig_assert_classPathNotNull;
	public static String vmRunnerConfig_assert_programArgsNotNull;
	public static String vmRunnerConfig_assert_vmArgsNotNull;

	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry_type_2;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry_location_3;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry___missing_project_name_4;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry___missing_archive_path_5;
	public static String RuntimeClasspathEntry_Unable_to_recover_runtime_class_path_entry___missing_variable_name_6;
	public static String RuntimeClasspathEntry_Illegal_classpath_entry__0__1;

	public static String JREContainer_JRE_System_Library_1;

	public static String SocketAttachConnector_Port_unspecified_for_remote_connection__2;
	public static String SocketAttachConnector_Hostname_unspecified_for_remote_connection__4;

	public static String JREContainerInitializer_JRE_referenced_by_classpath_container__0__does_not_exist__1;
	public static String JREContainerInitializer_Classpath_entry__0__does_not_refer_to_an_existing_library__2;
	public static String JREContainerInitializer_Classpath_entry__0__does_not_refer_to_a_library__3;
	public static String JREContainerInitializer_Default_System_Library_1;

	public static String ArchiveSourceLocation_Unable_to_initialize_source_location___missing_archive_path__3;
	public static String ArchiveSourceLocation_Exception_occurred_initializing_source_location__5;
	public static String ArchiveSourceLocation_Unable_to_locate_source_element_in_archive__0__1;
	public static String ArchiveSourceLocation_Exception_occurred_while_detecting_root_source_directory_in_archive__0__1;
	public static String ArchiveSourceLocation_Exception_occurred_while_detecting_root_source_directory_in_archive__0__2;

	public static String DirectorySourceLocation_Unable_to_initialize_source_location___missing_directory_path_3;
	public static String DirectorySourceLocation_Unable_to_initialize_source_location___directory_does_not_exist___0__4;
	public static String DirectorySourceLocation_Exception_occurred_initializing_source_location__5;

	public static String JavaProjectSourceLocation_Unable_to_initialize_source_location___missing_project_name_3;
	public static String JavaProjectSourceLocation_Exception_occurred_initializing_source_location__4;

	public static String JavaSourceLocator_Illegal_to_have_a_container_resolved_to_a_container_1;
	public static String JavaSourceLocator_Unable_to_restore_Java_source_locator___invalid_format__6;
	public static String JavaSourceLocator_Unable_to_restore_Java_source_locator___invalid_format__10;
	public static String JavaSourceLocator_Unable_to_restore_source_location___class_not_found___0__11;
	public static String JavaSourceLocator_Unable_to_restore_source_location__12;
	public static String JavaSourceLocator_Unable_to_restore_Java_source_locator___invalid_format__14;
	public static String JavaSourceLocator_Exception_occurred_initializing_source_locator__15;

	public static String Standard11xVMType_Standard_1_1_x_VM_1;

	public static String PackageFragmentRootSourceLocation_Unable_to_initialize_source_location___missing_handle_identifier_for_package_fragment_root__6;
	public static String PackageFragmentRootSourceLocation_Unable_to_initialize_source_location___package_fragment_root_does_not_exist__7;
	public static String PackageFragmentRootSourceLocation_Exception_occurred_initializing_source_location__8;
	public static String JavaAppletLaunchConfigurationDelegate_Could_not_build_HTML_file_for_applet_launch_1;
	public static String AbstractVMRunner_0;
	public static String AbstractJavaLaunchConfigurationDelegate_20;

	public static String PackageFragmentRootSourceContainerTypeDelegate_6;
	public static String PackageFragmentRootSourceContainerTypeDelegate_7;
	public static String PackageFragmentRootSourceContainerTypeDelegate_8;

	public static String ProjectClasspathVariableResolver_1;
	public static String ProjectClasspathVariableResolver_2;
	public static String ProjectClasspathVariableResolver_3;

	public static String VMLogging_1;
	public static String VMLogging_2;
	public static String VMLogging_3;

	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, LaunchingMessages.class);
	}

    public static String SocketAttachConnector_0;

	public static String AbstractVMInstall_0;

	public static String AbstractVMInstall_1;

	public static String AbstractVMInstall_3;

	public static String AbstractVMInstall_4;

	public static String MacInstalledJREs_0;

	public static String MacInstalledJREs_1;

	public static String RunnerBootpathError;

	public static String RunnerBootpathPError;

}
