import {Fragment} from 'react'; import ExternalLink from 'sentry/components/links/externalLink'; import {Layout, LayoutProps} from 'sentry/components/onboarding/gettingStartedDoc/layout'; import {ModuleProps} from 'sentry/components/onboarding/gettingStartedDoc/sdkDocumentation'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step'; import {t, tct} from 'sentry/locale'; // Configuration Start const introduction = tct( 'Sentry for Java is a collection of modules provided by Sentry; it supports Java 1.8 and above. At its core, Sentry for Java provides a raw client for sending events to Sentry. If you use [strong:Spring Boot, Spring, Logback, or Log4j2], we recommend visiting our Sentry Java documentation for installation instructions.', { strong: , link: , } ); export const steps = ({ dsn, }: { dsn?: string; } = {}): LayoutProps['steps'] => [ { type: StepType.INSTALL, description: t('Install the SDK via Gradle, Maven, or SBT:'), configurations: [ { description:
{t('Gradle')}
, configurations: [ { language: 'groovy', description: (

{tct('For Gradle, add to your [code:build.gradle] file:', { code: , })}

), code: ` // Make sure mavenCentral is there. repositories { mavenCentral() } // Add Sentry's SDK as a dependency. dependencies { implementation 'io.sentry:sentry:6.25.2' } `, }, { language: 'groovy', description: t( 'To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.' ), code: ` buildscript { repositories { mavenCentral() } } plugins { id "io.sentry.jvm.gradle" version "3.11.1" } sentry { // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry. // This enables source context, allowing you to see your source // code as part of your stack traces in Sentry. includeSourceContext = true org = "___ORG_SLUG___" projectName = "___PROJECT_SLUG___" authToken = "your-sentry-auth-token" } `, }, ], }, { description:
{t('Maven')}
, configurations: [ { language: 'xml', description: (

{tct('For Maven, add to your [code:pom.xml] file:', {code: })}

), code: ` io.sentry sentry 6.25.2 `, }, { language: 'xml', description: t( 'To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.' ), code: ` io.sentry sentry-maven-plugin 0.0.2 true /path/to/sentry-cli ___ORG_SLUG___ ___PROJECT_SLUG___ env.SENTRY_AUTH_TOKEN generate-resources uploadSourceBundle ... `, }, ], }, { description:
{t('SBT')}
, configurations: [ { description:

{tct('For [strong:SBT]:', {strong: })}

, language: 'scala', code: `libraryDependencies += "io.sentry" % "sentry" % "6.25.2"`, }, ], }, ], additionalInfo: (

{tct( 'To upload your source code to Sentry so it can be shown in stack traces, please refer to [link:Manually Uploading Source Context].', { link: ( ), } )}

), }, { type: StepType.CONFIGURE, description: t( "Configure Sentry as soon as possible in your application's lifecycle:" ), configurations: [ { language: 'java', code: ` import io.sentry.Sentry; Sentry.init(options -> { options.setDsn("${dsn}"); // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring. // We recommend adjusting this value in production. options.setTracesSampleRate(1.0); // When first trying Sentry it's good to see what the SDK is doing: options.setDebug(true); }); `, }, ], }, { type: StepType.VERIFY, description: (

{tct( 'Trigger your first event from your development environment by intentionally creating an error with the [code:Sentry#captureException] method, to test that everything is working:', {code: } )}

), configurations: [ { language: 'java', code: ` import java.lang.Exception; import io.sentry.Sentry; try { throw new Exception("This is a test."); } catch (Exception e) { Sentry.captureException(e); } `, }, ], additionalInfo: (

{t( "If you're new to Sentry, use the email alert to access your account and complete a product tour." )}

{t( "If you're an existing user and have disabled alerts, you won't receive this email." )}

), }, { title: t('Measure Performance'), description: t('You can capture transactions using the SDK. For example:'), configurations: [ { language: 'java', code: ` import io.sentry.ITransaction; import io.sentry.Sentry; import io.sentry.SpanStatus; // A good name for the transaction is key, to help identify what this is about ITransaction transaction = Sentry.startTransaction("processOrderBatch()", "task"); try { processOrderBatch(); } catch (Exception e) { transaction.setThrowable(e); transaction.setStatus(SpanStatus.INTERNAL_ERROR); throw e; } finally { transaction.finish(); } `, }, ], additionalInfo: (

{tct( 'For more information about the API and automatic instrumentations included in the SDK, [link:visit the docs].', { link: ( ), } )}

), }, ]; // Configuration End export function GettingStartedWithJava({dsn, ...props}: ModuleProps) { return ; } export default GettingStartedWithJava;