/*******************************************************************************
 * Copyright (c) 2000, 2010 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * 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 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 StandardVMType_Standard_VM_not_supported_on_MacOS__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 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;

	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;

}
